-3

次のようなデータでMATLABのinterp1-functionをどのように使用すればよいか誰かが助けてくれますか?

   -99
     3
     1
     7
    10
    10
    22
    29
   -99
   -99
    25
    26
    60
   142
    78
   124
    74
    26
    13
    18

-99のデータ値はエラー値に対応しているので、それらを補間したいのですが...アドバイスはありますか?=)ありがとうございます!

4

2 に答える 2

1

現時点ではMatlabの周辺ではありませんが、次のようなことができると思います。

    Y =  [-99
         3
         1
         7
        10
        10
        22
        29
       -99
       -99
        25
        26
        60
       142
        78
       124
        74
        26
        13
        18];

%Make an array of x values - I'm assuming yours are evenly spaced
Xi = 1:length(Y);

%remove the -99 points
errors = Y == -99;
X = Xi(~errors);
Y = Y(~errors);

Yi = interp1(X, Y, Xi);

したがって、コードでは、XとYは、補間するポイントのx座標ベクトルとy座標ベクトル、つまり入力ポイント(エラーなし!)であり、Xiは、値を補間するポイントの位置のベクトルです。 for(Xが位置で、Yが値であると考える場合)。ポイントYiは、Xiに対応する補間値になります。この場合、-99ポイントが線形補間値に置き換えられた、元のベクトルになると思います。面白いことが端で起こるかもしれません:/ドキュメントをチェックしてください。エラーがないことを願っています。

于 2013-01-08T12:58:32.723 に答える
1

配列が。であるとしましょうa

x = find(a ~= -99);
y = a(x);
xi = 1:length(a);
yi =  interp1(x, y, xi);

yiあなたが探しているものです。

于 2013-01-08T13:01:03.900 に答える