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

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]];

Réponses (1)

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;

3 commentaires

Shahd Ewawi
Shahd Ewawi le 3 Avr 2013
Modifié(e) : Shahd Ewawi le 3 Avr 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.
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 ^^

Connectez-vous pour commenter.

Catégories

En savoir plus sur Programming dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by