任何人都可以帮助我如何在MATLAB上使用interp1函数来处理以下数据:
-99
3
1
7
10
10
22
29
-99
-99
25
26
60
142
78
124
74
26
13
18
-99数据值对应于错误值,我想插入它们...建议? =)谢谢!
答案 0 :(得分: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 :(得分:1)
假设你的数组是a
。
x = find(a ~= -99);
y = a(x);
xi = 1:length(a);
yi = interp1(x, y, xi);
yi
正是您要找的。