我試圖在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',你可以得到最接近數據極值的值,但是如果你想做一些更像更接近於兩點的線性外推的事情,你可能會必須做更多的工作... –