我正在使用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增量来增加测量值的分辨率。这段代码很好,即它给了我正在寻找的矩阵。但是,当我将其应用于我的实际数据时,运行需要很长时间,主要是因为我正在运行一个运行不同单元格的附加循环。有没有办法在不使用循环的情况下实现上述内容,换句话说,是否有更快的方法?
答案 0 :(得分:7)
将for循环替换为:
i_temp = interp1(depth,temp',bthD)';
如果您更改temp
的定义方式,并且i_temp
是19x365阵列而不是365x19,则可以删除转置。
BTW,interp1的documentation非常明确,你可以传入一个数组作为第二个参数。