2013-01-08 29 views
-3

誰能幫助我應該如何使用interp1功能MATLAB的數據,如以下幾點:如何在MATLAB中使用插值?

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

的-99數據值與給錯誤的價值觀和我想插他們...建議? =)謝謝!

+0

我嘗試了以下方法:例如,如果值X = -99,我已經使其值等於X =(X-1 + X + 1)/ 2,但是我想如果MATLAB的interp1函數可以給我更好的結果或東西,但功能對我來說有點神祕,我想如果我能在1分鐘內得到答案,而不是試圖找出功能1小時=) – jjepsuomi

+1

嘗試閱讀'help interp1',然後讓人們向你解釋。 –

+0

我知道你的意思,我試過,但你知道你什麼時候忙,強調你有時想試試你的運氣;) – jjepsuomi

回答

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是你想插入值的點的位置向量(如果你認爲X是位置而Y是值)。 Yi點將是與Xi對應的插值,在這種情況下,我認爲這將是您的原始矢量,其中-99點被線性內插值替換。有趣的事情可能發生在邊緣:/檢查文檔。希望沒有錯誤。

1

可以說你的數組是a

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

yi是你在找什麼。