2

我正在使用 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 增量来提高测量的分辨率。这段代码运行良好,即它为我提供了我正在寻找的矩阵。但是,当我将它应用到我的实际数据时,它需要很长时间才能运行,主要是因为我正在运行一个额外的循环,该循环贯穿各个单元格。有没有一种方法可以在不使用循环的情况下实现上述内容,换句话说,是否有更快的方法?

4

1 回答 1

7

将您的 for 循环替换为:

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

temp如果您更改定义的方式,并且您可以i_temp接受 19x365 数组而不是 365x19 ,则可以摆脱转置。

顺便说一句,interp1 的文档非常清楚,您可以传入一个数组作为第二个参数。

于 2012-11-14T17:04:33.147 回答