谁能帮助我应该如何在 MATLAB 上对以下数据使用 interp1-function:
-99
3
1
7
10
10
22
29
-99
-99
25
26
60
142
78
124
74
26
13
18
-99 数据值对应于错误值,我想对它们进行插值...建议?=) 谢谢!
谁能帮助我应该如何在 MATLAB 上对以下数据使用 interp1-function:
-99
3
1
7
10
10
22
29
-99
-99
25
26
60
142
78
124
74
26
13
18
-99 数据值对应于错误值,我想对它们进行插值...建议?=) 谢谢!
目前不在 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 点被线性插值替换。有趣的事情可能会发生在边缘:/检查文档。希望没有错误。
假设您的数组是a
.
x = find(a ~= -99);
y = a(x);
xi = 1:length(a);
yi = interp1(x, y, xi);
yi
就是你要找的。