magic(2) 처럼 2*2 행렬값을 2번 반환하는 loop을 돌린다고 가정하자.
MAGIC=zeros(2*2,2)
for i=1:2
temp=rand(2)
MAGIC(i,5)=temp
end
과연 답이 나올까?
물론 결과는 NO다 Loop은 1개의 열이나 행의 결과값을 반환할뿐, 행렬결과값을 반복해서 ?어주지 않기 때문이다. 그래서 차원을 변환 (가령 1차원을 2차원) 시키는 함수인 cat()을 사용해 보자.
MAGIC = [];
for i = 1:2
temp=rand(2,2)
MAGIC = cat(1, MAGIC, temp);
end
0.652666373221405 0.0649349796926128
0.616440231958846 0.783414261776650
0.788429199074208 0.0706853122494127
0.431215817527757 0.0616526586755490
1차원을 2차원으로 바꾸려면
MAGIC = [];
for i = 1:2
temp=rand(2,2)
MAGIC = cat(2, MAGIC, temp);
end
0.916047782513092 0.947717978920346 0.894487049600594 0.216840725496633
0.720314386330340 0.0411028087462462 0.975685658385348 0.357190269221683
3차원으로 바꾸려면
MAGIC = [];
for i = 1:2
temp=rand(2,2)
MAGIC = cat(3, MAGIC, temp);
end
val(:,:,1) =
0.3919 0.4811
0.1029 0.7514
val(:,:,2) =
0.4217 0.1548
0.6189 0.6501
참 유용한 함수다.