Repeat elements of a vector as matrixes in a multidimensional array.
12 views (last 30 days)
Show older comments
Idossou Marius Adom
on 2 Dec 2019
Commented: Idossou Marius Adom
on 2 Dec 2019
Hello Everyone.
I want to repeat elements of a vector as matrixes in a multidimensional array. For example, say I have the vector v = [1 2 3 4 5]. Then I want to construct a three dimensional array w of dimension say 4*3*lenght(v) where: w(:,:,1) = v(1), w(:,:,2) = v(2), ... w(:,:,length(v)) = v(end). Is there a way to do this without using a for loop ? Any help would be precious.
Thank you.
0 Comments
Accepted Answer
Robert U
on 2 Dec 2019
Hi Marius Adom,
If I understood your task correctly, you can use arrayfun() to create each x-y-Matrix and concatenate them using cat():
x = 4;
y = 3;
v = [1 2 3 4 5];
cOut = arrayfun(@(dIn,nInd) ones(x,y) .* dIn, v, 1:length(v), 'UniformOutput',false);
dOut = cat(3,cOut{:});
Kind regards,
Robert
More Answers (1)
James Tursa
on 2 Dec 2019
Another way:
m = size of 1st dimension
n = size of 2nd dimension
v = your row vector
result = reshape(repmat(v,m*n,1),m,n,[]);
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!