Repeat elements of a vector as matrixes in a multidimensional array.

조회 수: 11 (최근 30일)
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.

채택된 답변

Robert U
Robert U 2019년 12월 2일
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

추가 답변 (1개)

James Tursa
James Tursa 2019년 12월 2일
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,[]);

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by