# Question about concatenation in for-loop

조회 수: 26(최근 30일)
Hello,
I am trying to concatenate a 2D matrix into a 3D matrix where the length of the 3rd dimension is dependent on length of a vector previously asigned. For example, given
A = [1,2,3,4,5];
B = [1,2;3,4];
I would like creat marix C with size 2x2x5. I can do this easily by doing
C = cat(3,B,B,B,B,B);
However if I change the length of A, I want to write my code so that I don't have to update then number of times "B" repeats itself inside the cat function. I tried using the folowing for-loop but it didn't work. Any advice would be appreciated.
for i=1:length(A)
C = cat(3,B,B)
end

#### 댓글 수: 1

Patrick Keiffer 9 Jan 2019
So I figured it out. The folowing code works.
A = [1,2,3,4,5];
B = [1,2;3,4];
C = B;
for i=1:length(A)
C = cat(3,C,B);
end

댓글을 달려면 로그인하십시오.

### 채택된 답변

OCDER 9 Jan 2019
Instead of cat, use repmat for your case, as you're repeatedly stacking a matrix in a dimension.
B = rand(2, 5)
C = repmat(B, 1, 1, 5) %stacks B in the 3rd dimension 5 times

#### 댓글 수: 1

Patrick Keiffer 9 Jan 2019
Oh, thats a great solution. Thanks!

댓글을 달려면 로그인하십시오.

R2017b

### Community Treasure Hunt

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

Start Hunting!

Translated by