繁体   English   中英

矩阵内的插值。 MATLAB

[英]Interpolation inside a matrix. 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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM