Vector Manipulation into a matrix?

I have a vector, A, of dimensions 21-by-1. How would I be able to manipulate this matrix such that:
A = [a;b;c;d;e;f;g;h;i;...]
Becomes a 3-by-7 matrix, B:
B = [c,b,a;f,e,d;i,h,g,...]
Any help would be much appreciated! Thanks.

 Accepted Answer

Hi Daniel,
This can be solved by first using the reshape function and then performing the circular shift operation.
% Suppose the vector is a - of length 21
a = rand(21,1); % random column vector 21-by-1
% Now use the reshape operation to the desired size
aReshape = reshape(a,3,7); % Size is 3-by-7
% Store the first row in a variable
temp = aReshape(1,:);
% Replace the first row with the third row
aReshape(1,:) = aReshape(3,:);
% Replace the third row with the first row
aReshape(3,:) = temp;
out = aReshape;
The documentation link for the reshape function is
Hope this helps.
Regards,
Sriram

1 Comment

Thank you Sriram, very informative answer and much more understandable now!

Sign in to comment.

More Answers (1)

A=(1:21)';
temp1=reshape(A,3,[]);
temp2=temp1';
B=fliplr(temp2)

Categories

Community Treasure Hunt

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

Start Hunting!