与えられた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倍高速です。
私の変更を可能にする非常に速い方法は何ですか?
考えられるアイデア:
Y_i1
-valuesを削除するために後処理を実行しNaN
ます。- ループと-コマンドの組み合わせを使用して、
find
補間なしで常にネイバーを使用します。