How to convert matrix to 1-D array and back to matrix form?

I have a matrix of size say, W X H, i have to convert the matrix into a 1-D array and perform some operations(bitxor) and again retrieve back my image in the same dimension ie W X H. How to do it? Thanks in advance.

 Accepted Answer

Use reshape to do both of these:
>> A = [1,2,3,4;5,6,7,8]
A =
1 2 3 4
5 6 7 8
>> B = reshape(A,1,[]) % columnwise
B =
1 5 2 6 3 7 4 8
>> B = reshape(A.',1,[]) % rowwise
B =
1 2 3 4 5 6 7 8
>> reshape(B,size(A))
ans =
1 3 5 7
2 4 6 8
Note how one can use the transpose operator to select between columnwise and rowwise conversion from the matrix to the vector.

3 Comments

Thanks @Stephen.. but what to do if the size of my 1-D array is changed?
If the number of elements has changed then you will have to decide yourself how this should be dealt with. You have many choices, such as:
  • define a new size based on the new number of elements
  • removing some values
  • padding
  • subsampling
  • interpolating
  • extrapolating
  • etc
What do you want to do?
okay... Thanks Stephen for helping me. I think i have to remove some elements to keep the number of elements same.

Sign in to comment.

More Answers (0)

Categories

Asked:

on 27 Jul 2015

Edited:

on 27 Jul 2015

Community Treasure Hunt

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

Start Hunting!