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

4 次查看(过去 30 天)
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

采纳的回答

madhan ravi
madhan ravi 2019-7-26
编辑:madhan ravi 2019-7-26
"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 个评论
madhan ravi
madhan ravi 2019-7-26
编辑:madhan ravi 2019-7-26
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 2019-7-27
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

请先登录,再进行评论。

更多回答(1 个)

KSSV
KSSV 2019-7-26
This will be your function:
Also read about fillgaps.

类别

Help CenterFile Exchange 中查找有关 MATLAB 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by