0

与えられたx値(列ベクトルとして)といくつかのy値が行列(列ベクトルの行ベクトル)に結合されたデータのセットを想像してみてください。マトリックスの一部の値は使用できません。

%% Create the test data
N = 1e2; % Number of x-values

x = 2*sort(rand(N, 1))-1;
Y = [x.^2, x.^3, x.^4, x.^5, x.^6]; % Example values
Y(50:80, 4) = NaN(31, 1); % Some values are not avaiable

これで、補間用の新しいx値の列ベクトルができました。

K = 1e2; % Number of interplolation values
x_i = rand(K, 1);

私の目標は、指定されたx_i値のすべてのy値を補間する高速な方法を見つけることです。y値にNaN値がある場合は、欠落データの前にあるy値を使用します。例の場合、これはのデータになりY(49, :)ます。

を使用するinterp1と、NaN値が取得され、大規模な場合は実行が遅くxなりx_iます。

starttime = cputime;
Y_i1 = interp1(x, Y, x_i);
executiontime1 = cputime - starttime

別の方法はinterp1q、で、これは約2倍高速です。

私の変更を可能にする非常に速い方法は何ですか?

考えられるアイデア:

  1. Y_i1-valuesを削除するために後処理を実行しNaNます。
  2. ループと-コマンドの組み合わせを使用して、find補間なしで常にネイバーを使用します。
4

1 に答える 1

1

interp1スプライン補間 ( )を使用すると、 splineNaN は無視されます。

于 2012-08-22T10:47:48.543 に答える