MATLAB Answers


How can i concatenate array of 3 to form single matrix?

Asked by Aliff Zin on 29 Jan 2017
Latest activity Answered by Andrei Bobrov
on 29 Jan 2017
Accepted Answer by Jan
i am very new to matlab, so sorry if i sounded stupid
i just need to get an output of 3 array from my looping and form one single 3d matrix
for example
100 array x 10 array x 12 array and store it as 3d matrix
so that the size will be : 100 x 10 x 12
any idea?
and thank you in advanced

  1 Comment

An important detail is missing: I assume "100 array" means a vector of the size [1 x 100] or [100 x 1]. Then combining these vectors need to apply a mathematical operation, multiplication or addition etc. Please post some example input data and the wanted output, e.g. with the sizes 2,3,4.

Sign in to comment.

2 Answers

Answer by Jan
on 29 Jan 2017
Edited by Jan
on 29 Jan 2017
 Accepted Answer

A bold guess:
x = 1:100;
y = 1:10;
z = 1:12;
Result = reshape(x, [], 1, 1) + reshape(y, 1, [], 1) + reshape(z, 1, 1, []);
Here I assumes, that you want to combine the values by an addition.
This runs in R2016b. The reshape commands are formulated equivalently for demonstration purposes only: In the first you can omit the trailing 1, the second is not needed because y has the wanted shape already.
For earlier version, the addition of arrays with different shapes required bsxfun:
Result = bsxfun(@plus, reshape(x, [], 1, 1), ...
bsxfun(@plus, reshape(y, 1, [], 1), reshape(z, 1, 1, [])));

  1 Comment

Guess not all superheroes wear capes, thank you @Jan Simon !

Sign in to comment.

Answer by Andrei Bobrov
on 29 Jan 2017

[xx,yy,zz] = ndgrid(x,y,z);
res = xx+yy+zz


Sign in to comment.