矩阵内部的插值.Matlab



我有一个矩阵,看起来像:

    0  0  0  0  0
    1  0  0  0  0
    0  2  0  0  0
    0  0  2  0  0
    0  0  0  1  0
    1  0  0  0  1
    0  4  0  0  0
    0  0  3  0  0
    6  0  0  4  0
    0  3  0  0  2
    0  0  5  0  0

它是11x5矩阵。我想在每列的值之间垂直插值。

有什么帮助吗?

谢谢。

M =[0  0  0  0  0
    1  0  0  0  0
    0  2  0  0  0
    0  0  2  0  0
    0  0  0  1  0
    1  0  0  0  1
    0  4  0  0  0
    0  0  3  0  0
    6  0  0  4  0
    0  3  0  0  2
    0  0  5  0  0];
xi = 1:size(M,1)
for colIdx = 1:size(M,2)
    col = M(:,colIdx);
    x = xi(~~col);  %// Note that ~~col is a logical vector of elements that are not equal to zero. i.e. it's the same as col ~= 0
    y = col(~~col);
    M(:,colIdx) = interp1(x,y,xi);
end

如果你想让外点是0,在循环后加上这条线:

M(isnan(M)) = 0;

最新更新