0

想象一组具有给定 x 值(作为列向量)和几个 y 值组合在矩阵中的数据(列向量的行向量)。矩阵中的某些值不可用:

%% Create the test data
N = 1e2; % Number of x-values

x = 2*sort(rand(N, 1))-1;
Y = [x.^2, x.^3, x.^4, x.^5, x.^6]; % Example values
Y(50:80, 4) = NaN(31, 1); % Some values are not avaiable

现在我有一个用于插值的新 x 值的列向量。

K = 1e2; % Number of interplolation values
x_i = rand(K, 1);

我的目标是找到一种快速的方法来插入给定 x_i 值的所有 y 值。如果 y 值中有 NaN 值,我想使用缺失数据之前的 y 值。在示例情况下,这将是 中的数据Y(49, :)

如果我使用interp1,我会得到 NaN 值,并且对于大型x和执行速度很慢x_i

starttime = cputime;
Y_i1 = interp1(x, Y, x_i);
executiontime1 = cputime - starttime

另一种方法是interp1q,它大约快两倍。

什么是允许我修改的非常快速的方法?

可能的想法:

  1. 进行后处理Y_i1以消除- 值NaN
  2. 使用循环和 - 命令的组合find始终使用邻居而不进行插值。
4

1 回答 1

1

使用interp1样条插值 ( spline) 会忽略 NaN。

于 2012-08-22T10:47:48.543 回答