Concatenate vector in a 3d matrix

Hi. I have these vectors: a = [11 12 13 14]; b = [21 22 23 24]; c = [31 32 33 34]; d = [41 42 43 44];
I want to concatenate them in a 2x2x4 matrix: M(:,:,1) = [11 21; 31 41]; M(:,:,2)= [12 22; 32 42]; and so on.
How can I do that?

 Accepted Answer

For your exact problem:
M = reshape([a;c;b;d],2,2,4);
Then generalize as appropriate. E.g., if a,b,c,d are not row vectors to start with,
M = reshape([a(:)';c(:)';b(:)';d(:)'],2,2,4);
etc.

4 Comments

Perfect! Thank you!
But now I have another problem...
I have two matrices
M = (3 by 3 by 50)
V = (3 by 1 by 50)
The third dimension is the time.
I want the result of M*V, as a product (3 by 3) * (3 by 1) for each time step.
Neither * nor .* has worked :(
Will this work?
for i=1:50
pr(:,:,i)=M(:,:,i)*V(:,:,i);
end
I would like to avoid cycles... :)
MtimesV = mtimesx(M,V,'speed');
You can find mtimesx on the FEX here:
http://www.mathworks.com/matlabcentral/fileexchange/25977-mtimesx-fast-matrix-multiply-with-multi-dimensional-support

Sign in to comment.

More Answers (0)

Categories

Community Treasure Hunt

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

Start Hunting!