MATLAB Answers

Shahd Ewawi

what does this line of code means bwZ = [zeros(1,c​+1);[zeros​(r,1) bw]]; ??

Asked by Shahd Ewawi
on 2 Apr 2013
%bw=[0   1   0   0   1   1;
%    1   1   1   0   0   0;
%    0   0   1   0   0   1;
%    1   1   0   0   1   1;
%    0   0   0   1   0   0;];
[r,c] = size(bw);   
bwZ = [zeros(1,c+1);[zeros(r,1) bw]];

i dont understand this line of code :

bwZ = [zeros(1,c+1);[zeros(r,1) bw]];



No products are associated with this question.

1 Answer

Answer by Walter Roberson
on 2 Apr 2013

The line adds a row of zeros along the top, and a column of zeros along the side, of bw.

Another way of expressing it would have been:

bwZ = zeros(r+1, c+1, class(bw));
bwZ(2:end, 2:end) = bw;


this code is for connected components i dont understand why do we have to add a row of zeros along the top, and a column of zeros along the side.

It can make the search algorithm easier to write.

For example, if the task were to find the beginning of each "pulse" in a vector of 0 and 1 values, then one way to do that is to search for places in which you have 0 (non-pulse) followed by 1 (pulse). But that search algorithm would fail if the first item in the vector was a 1, as there is no 0 before it. A solution to that is to put a 0 before the vector and then you would not need special code to handle the situation.

Thank you ^^

Join the 15-year community celebration.

Play games and win prizes!

Learn more
Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!