简体   繁体   中英

Interpolation inside a matrix. Matlab

I have a matrix looks like:

    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

It is 11x5 matrix. I want to interpolate between the values vertically for each column.

Any help ?

Thanks.

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

then if you want the outer points to be 0 add this line after the loop:

M(isnan(M)) = 0;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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