how to fill gaps in a matrix with a numbers using interpolation to develop a contour.

7 views (last 30 days)
M =
0 0 0
0 0 3
0 3 0
3 0 3
0 3 0
0 0 3
3 0 0
0 0 0
in this M matrix, using interpolation i want to fill gaps with 3s between any 3s. for example, in first column, first 3 is in the 4th row and last 3 is in the 7th row. i want to fill rows 5 and 6 also with 3s. same for other columns.
Thanks and regards for all cooperation

Accepted Answer

Andrei Bobrov
Andrei Bobrov on 27 Jul 2019
Edited: Andrei Bobrov on 27 Jul 2019
M(cumsum(M) & cumsum(M,1,'reverse')) = 3;
or for:
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];
s = join(string(M)','');
[a,b] = regexp(s,'30+3');
lo = false(size(M));
for ii = 1:numel(a)
for jj = 1:numel(a{ii})
lo(a{ii}(jj)+1:b{ii}(jj)-1,ii) = true;
end
end
M(lo) = 3;

More Answers (1)

KALYAN ACHARJYA
KALYAN ACHARJYA on 27 Jul 2019
Edited: KALYAN ACHARJYA on 27 Jul 2019
M =[0 0 0
0 0 3
0 3 0
3 0 3
0 3 0
0 0 3
3 0 0
0 0 0]
[rows colm]=size(M);
for i=1:colm
idx=find(M(:,i)==3);
idx_update=idx(1):1:idx(end);
M(idx_update,i)=3;
end
M
Loop can be avoided. Wait for experts comments.
Result:
M =
0 0 0
0 0 3
0 3 3
3 3 3
3 3 3
3 0 3
3 0 0
0 0 0
  5 Comments
M.S. Khan
M.S. Khan on 27 Jul 2019
Edited: M.S. Khan on 27 Jul 2019
Mr. Kalyan, 3 and next 3 positions should be filled with 3s. For example 3 0 0 0 0 3. So it should be 3 3 3 3 3 3.

Sign in to comment.

Categories

Find more on Discrete Math in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!