Vector Manipulation into a matrix?

4 次查看(过去 30 天)
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.

采纳的回答

Sriram Tadavarty
Sriram Tadavarty 2020-3-13
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 个评论
Daniel Tanner
Daniel Tanner 2020-3-13
Thank you Sriram, very informative answer and much more understandable now!

请先登录,再进行评论。

更多回答(1 个)

Fangjun Jiang
Fangjun Jiang 2020-3-13
A=(1:21)';
temp1=reshape(A,3,[]);
temp2=temp1';
B=fliplr(temp2)

类别

Help CenterFile Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by