我试图在R中线性内插。 MATLAB中的伪代码为u = interp1(u, linspace(1, numel(u), numel(u)-1));
,如果点在域外(默认值,更多here),外插返回NaN。如何像MATLAB一样使用R interp1?
approx rule=1
相当于MATLAB伪
我不知道关于第二interp1
参数究竟是不是在MATLAB需要,所以我只是让unsuccessufully y <- x
这样
interp1(x, y, xi, method = "linear")
最少的代码例子(真实的有> 500k点,所以线性工作),其输出在顶部
List of 2
$ : num [1:3] 1 2 3
$ : num [1:2] 1 2
num [1:2] 0 1
Error in interp1(x, y, xi, method = "linear") :
Points 'xi' outside of range of argument 'x'.
Execution halted
library("pracma") # http://finzi.psych.upenn.edu/library/pracma/html/interp1.html
files <- vector("list", 2)
files[[1]] <- c(1,2,3)
files[[2]] <- c(1,2)
str(files)
# Wanted, MATLAB: u = interp1(u, linspace(1, numel(u), numel(u)-1));
xi <- seq(0,1, len = length(files[[1]]) - 1)
x <- files[[1]]
y <- files[[1]]
str(xi)
files[[1]] <- interp1(x, y, xi, method = "linear")
str(files)
我知道线程using interp1 in R for matrix但我没有矩阵。
输入:c(1,2,3)
预期输出:[1:2]数据结构
R:3.3.1
OS:Debian的8.5
你试过'?约'? – baptiste
@baptiste是的,我先试了一下,但后来又回到'interp1',因为它听起来最接近MATLAB伪代码。 –
MATLAB如何外推? ''approx'中'rule'的解释说明,如果你设置'rule = 2',你可以得到最接近数据极值的值,但是如果你想做一些更像更接近于两点的线性外推的事情,你可能会必须做更多的工作... –