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

2 Ansichten (letzte 30 Tage)
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

Akzeptierte Antwort

Andrei Bobrov
Andrei Bobrov am 27 Jul. 2019
Bearbeitet: Andrei Bobrov am 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;

Weitere Antworten (1)

KALYAN ACHARJYA
KALYAN ACHARJYA am 27 Jul. 2019
Bearbeitet: KALYAN ACHARJYA am 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 Kommentare
M.S. Khan
M.S. Khan am 27 Jul. 2019
Bearbeitet: M.S. Khan am 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.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by