Create columns with no zero sequentially elements of a vector

1 visualizzazione (ultimi 30 giorni)
I have a vector A=[4,2 3 2 2 0 0 1 2 2 0 0 1 2 3] and I am trying to create columns in new matrix with no zero sequentially elements, with a loop without success.Β1=[4,2 3 2 2] B2=[1 2 2] etc
I want to have a column with elements of A and when I find zero to create another column. Do you believe that it is feasible?
  1 Commento
John D'Errico
John D'Errico il 28 Apr 2015
You do realize that matrices MUST be rectangular? So all columns of a matrix must be the same length. This is why you failed to produce a result, since your result would not have that property.

Accedi per commentare.

Risposta accettata

Image Analyst
Image Analyst il 27 Apr 2015
Modificato: Image Analyst il 27 Apr 2015
This is very easy with the Image Processing Toolbox. Simply use bwlabel() (and regionprops() if you're going to have some unknown number of regions rather than exactly 3).
A=[4 2 3 2 2 0 0 1 2 2 0 0 1 2 3]
labeled = bwlabel(A)
B1 = A(labeled==1)
B2 = A(labeled==2)
B3 = A(labeled==3)
Do you have that toolbox?
  9 Commenti
Image Analyst
Image Analyst il 28 Apr 2015
For regionprops() to get the values of the original array, you need to supply it.
A=[4 2 3 2 2 0 0 1 2 2 0 0 1 2 3];
[labeled, numRegions] = bwlabel(A);
measurements = regionprops(labeled, A, 'PixelValues');
for k = 1 : numRegions
B{k} = measurements(k).PixelValues
end
See my Image Segmentation Tutorial for a more comprehensive and well commmented demo. http://www.mathworks.com/matlabcentral/fileexchange/25157-image-segmentation-tutorial
nmartz
nmartz il 28 Apr 2015
OK we did it, for one more time Image Analyst you are amazing!! Thanks a lot!!

Accedi per commentare.

Più risposte (1)

Andrei Bobrov
Andrei Bobrov il 27 Apr 2015
Modificato: Andrei Bobrov il 27 Apr 2015
B = zeros(size(A));
t = A > 0;
B(strfind(0,t],[0,1])) = 1;
b0 = cumsum(B);
Bout = accumarray(b0(t)',A(t)',[],@(x){x'});
  1 Commento
nmartz
nmartz il 27 Apr 2015
Thanks for your response, I checked this but I had this output: Error using horzcat Dimensions of matrices being concatenated are not consistent.

Accedi per commentare.

Community Treasure Hunt

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

Start Hunting!

Translated by