Clear Filters
Clear Filters

Replacing the numbers in a matrix

1 view (last 30 days)
mcl1993
mcl1993 on 11 Apr 2017
Commented: mcl1993 on 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.

Accepted Answer

Jan
Jan on 11 Apr 2017
Edited: Jan on 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 Comment
mcl1993
mcl1993 on 11 Apr 2017
I meant the 4 neighbours without the diagonals, thanks!

Sign in to comment.

More Answers (1)

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

Categories

Find more on Operating on Diagonal Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!