更快的matlab插值方法

Kat*_*tyB 2 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
Run Code Online (Sandbox Code Playgroud)

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

Dan*_*ker 7

将for循环替换为:

i_temp = interp1(depth,temp',bthD)';
Run Code Online (Sandbox Code Playgroud)

如果你改变temp定义的方式,你可以摆脱转置,如果你可以i_temp成为19x365阵列而不是365x19.

顺便说一下,interp1 的文档很清楚,你可以传入一个数组作为第二个参数.