Effacer les filtres
Effacer les filtres

Replacing the numbers in a matrix

1 vue (au cours des 30 derniers jours)
mcl1993
mcl1993 le 11 Avr 2017
Commenté : mcl1993 le 11 Avr 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.

Réponse acceptée

Jan
Jan le 11 Avr 2017
Modifié(e) : Jan le 11 Avr 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 commentaire
mcl1993
mcl1993 le 11 Avr 2017
I meant the 4 neighbours without the diagonals, thanks!

Connectez-vous pour commenter.

Plus de réponses (1)

Andrei Bobrov
Andrei Bobrov le 11 Avr 2017
Modifié(e) : Andrei Bobrov le 11 Avr 2017
Let A - your array [22 x 22]
A(bwdist(A==0) <= 1) = 0

Catégories

En savoir plus sur Operating on Diagonal Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by