如何在MATLAB中使用插值?

时间:2013-01-08 12:50:19

标签: matlab interpolation

任何人都可以帮助我如何在MATLAB上使用interp1函数来处理以下数据:

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

-99数据值对应于错误值,我想插入它们...建议? =)谢谢!

2 个答案:

答案 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正是您要找的。