How to use linear interpolation to fill gaps to generate a contour (closed surface)

8 views (last 30 days)
M = 0 0 0
0 0 3
0 3 3
3 3 3
0 0 0
0 0 3
3 0 0
0 0 0
% in the first colmn, btween 4th & 7th rows, i wan to fill 3. in the last column, between 4th and 6th i want to fill 3.
X = ~all(M==0,2)
N = interp1(find(X),M(X,:), 'nearest')
% its not giving me solution.
i am focusing only first and last column to generate controur (closed surface )
Plz need some tips.
your cooperation is highly appreciated.
warm regards

Accepted Answer

madhan ravi
madhan ravi on 26 Jul 2019
Edited: madhan ravi on 26 Jul 2019
"i am focusing only first and last column..."
M = [0 0 0;...
0 0 3;...
0 3 3;...
3 3 3;...
0 0 0;...
0 0 3;...
3 0 0;...
0 0 0];
Constant = 3; % example value
f = find(M(:,1));
fx = f .* [true;false(numel(f)-1,1)];
M(setdiff(nonzeros(fx):max(f),f),1) = Constant;
l = find(M(:,end));
lx = l .* [true;false(numel(l)-1,1)];
M(setdiff(nonzeros(lx):max(l),l),end) = Constant
  3 Comments
madhan ravi
madhan ravi on 26 Jul 2019
Edited: madhan ravi on 26 Jul 2019
I seemed to have answered your original question "% in the first colmn, btween 4th & 7th rows, i wan to fill 3. in the last column, between 4th and 6th i want to fill 3....
i am focusing only first and last column to generate controur (closed surface )" . You would be better off posting a new question.
M.S. Khan
M.S. Khan on 27 Jul 2019
Dear Dr. M. Ravi if I have matrix in this shape. M =[0 0 0; 2 2 3; 3 3 0; 0 0 0; 3 3 0; 2 2 3; 0 0 0; 3 3 2; 0 0 0; 3 3 3] How can I fill: 3 0 0 3 —> 3 3 3 3 3 0 3 0 2 —> 3 3 3 0 2 3 0 3 2 0 3 0 3 —> 3 3 3 2 0 3 3 3

Sign in to comment.

More Answers (1)

KSSV
KSSV on 26 Jul 2019
This will be your function:
Also read about fillgaps.

Categories

Find more on MATLAB in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!