convert image matrix to row vector

22 views (last 30 days)
Samaa Yasser
Samaa Yasser on 7 Apr 2021
Commented: Samaa Yasser on 8 Apr 2021
i have an image size 256x256 and i want to Convert the image matrix to a row vector with length same size , how i can got it please?
  2 Comments
DGM
DGM on 7 Apr 2021
What exactly do you mean by "length of same size". Length isn't size.
You can use reshape() to reshape the array, but it will be [1 65536].
A=reshape(A',1,[]); % if you want rows
If you're expecting a [1 256] vector, then you'll have to decide how exactly you want to reduce the image conceptually (e.g. maybe you want directional mean or min or max; maybe you just want to extract a single row from the image)
Samaa Yasser
Samaa Yasser on 7 Apr 2021
first thank you for your help..
i want to generate a row vector from image pixel.
so i want to calculate the total number of the original image pixels first, then Convert the image matrix of size MN for example to a row vector with length NM , inorder to get random permutation of this row vector, so can you help

Sign in to comment.

Answers (2)

David Hill
David Hill on 7 Apr 2021
yourMatrix(:)';

DGM
DGM on 7 Apr 2021
Edited: DGM on 7 Apr 2021
Consider a 3x3 test image:
A=repmat(1:3,[3 1])
A =
1 2 3
1 2 3
1 2 3
The line I suggested:
A=reshape(A',1,[]); % if you want to sample from rows
will take the rows of A and end-concatenate them into one long row vector of size 1x9. No need to calculate numel(A).
A =
1 2 3 1 2 3 1 2 3
If instead you were to do
A=reshape(A,1,[]); % if you want to sample from cols
or
A=A(:)'; % David's suggestion
you would still get the same output size, but you would be sampling columnwise instead.
ans =
1 1 1 2 2 2 3 3 3
If the ordering of the pixels doesn't matter, you could do it either way.

Community Treasure Hunt

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

Start Hunting!