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、365x19ではなく19x365配列で問題がない場合は、転置を取り除くことができます。

ところで、interp1のドキュメントは、2番目の引数として配列を渡すことができることを非常に明確にしています。

于 2012-11-14T17:04:33.147 に答える