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

Learn moreOpportunities for recent engineering grads.

Apply Today
Asked by Shahd Ewawi on 2 Apr 2013

bw=imread('connected.pgm')./255; %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.*

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;

Shahd Ewawi on 3 Apr 2013

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.

Walter Roberson on 3 Apr 2013

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.

## 0 Comments