Filter löschen
Filter löschen

Replacing the numbers in a matrix

1 Ansicht (letzte 30 Tage)
mcl1993
mcl1993 am 11 Apr. 2017
Kommentiert: mcl1993 am 11 Apr. 2017
I have a matrix of numbers (22 x 22). Some of the numbers in the cells are zero. If the cell contains a zero, I want to replace in the numbers in the cells directly above, below, to the right and left also with a zero.

Akzeptierte Antwort

Jan
Jan am 11 Apr. 2017
Bearbeitet: Jan am 11 Apr. 2017
Do you mean all 8 surrounding elements?
x = randi([0,5], 22, 22); % Example data
Z = conv2(double(x == 0), ones(3, 3), 'same');
x(Z ~= 0) = 0;
If you mean the 4 neighbors without the diagonals:
Z = conv2(double(x == 0), [0,1,0; 1,0,1; 0,1,0], 'same');
x(Z ~= 0) = 0;
  1 Kommentar
mcl1993
mcl1993 am 11 Apr. 2017
I meant the 4 neighbours without the diagonals, thanks!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Andrei Bobrov
Andrei Bobrov am 11 Apr. 2017
Bearbeitet: Andrei Bobrov am 11 Apr. 2017
Let A - your array [22 x 22]
A(bwdist(A==0) <= 1) = 0

Kategorien

Mehr zu Operating on Diagonal Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by