更快的matlab插值方法

时间:2012-11-14 16:55:42

标签: matlab interpolation

我正在使用interp1来补充一些数据:

temp = 4 + (30-4).*rand(365,10);
depth = 1:10;

dz = 0.5; %define new depth interval
bthD = min(depth):dz:max(depth); %new depth vector

for i = 1:length(temp);
    i_temp(i,:) = interp1(depth,temp(i,:),bthD);
end

在这里,我通过将测量值从1 m增量插值到0.5 m增量来增加测量值的分辨率。这段代码很好,即它给了我正在寻找的矩阵。但是,当我将其应用于我的实际数据时,运行需要很长时间,主要是因为我正在运行一个运行不同单元格的附加循环。有没有办法在不使用循环的情况下实现上述内容,换句话说,是否有更快的方法?

1 个答案:

答案 0 :(得分:7)

将for循环替换为:

i_temp = interp1(depth,temp',bthD)';

如果您更改temp的定义方式,并且i_temp是19x365阵列而不是365x19,则可以删除转置。

BTW,interp1的documentation非常明确,你可以传入一个数组作为第二个参数。