2013-02-17 3 views
2

다른 차원 (n = 256, 512, 1024, 2048 및 4096)의 5 개 행렬이 있으며 배열에 저장할 수있는 방법이 궁금합니다 (반복 할 수 있음). 나중에 for 루프에서). 나는 {\ tt matArray = [A B C D E];}를 시도했지만 horzcat은 동의 한 차원을 필요로한다고 말했다. 또한 셀을 사용하여 시도했지만 '두 번에서 셀로 변환 할 수 없습니다'라는 오류가 표시되어 올바르게 사용할 수 없습니다. 다음은 오류 코드를 제공하는 코드입니다.다른 크기의 행렬을 MATLAB의 배열에 저장

A=randi(9, 256); 
B=randi(9, 512); 
C=randi(9, 1024); 
D=randi(9, 2048); 
E=randi(9, 4096); 
matArray=cell(1,5); 
matArray(1)=A; 
matArray(2)=B; 
matArray(3)=C; 
matArray(4)=D; 
matArray(5)=E; 

여러분은 무슨 일이 벌어지고 있는지 알 수 있습니까? 미리 감사드립니다.

+1

셀 배열은 {}로 색인됩니다. 또는 matArray = [A; B; C; D; E];를 사용하십시오. – George

+0

조지가 똑같은 배열로 끝나는 것을 신경 쓰지 않는다면 George는 맞습니다 (';'는 수직 연결을 일으키고 첫 번째 차원은 동일하기 때문에 작동합니다). – Floris

+0

나는 matArray [A; B; C; D; E]를 시도했다. 전에 'CAT 인수 차원이 일관성이 없습니다.'라는 오류가 발생했습니다. –

답변

5

당신이 셀 요소를 해결하는 방법이다 사용 matArray{1}=A;

. 당신은 당신은 간단한 문 모든 행렬과 matArray를 초기화 할 수 matArray{1}

나중에 참조 할 수 있습니다 :

matArray = {A; B; C; D; E}; 

주 전지 초기화 곱슬 괄호의 사용.

+0

그래서 matArray를 루프에서 참조하는 경우 다음과 같이 말합니다. matArray {index}? –

+0

이 제안에 따라 matArray를 초기화하면 matArray {1}이 (가) A 등을 반환합니다. – Floris

+0

죄송하지만 한 가지 더 질문이 있습니다. 셀을 선언하는 올바른 방법은 무엇입니까? 위와 같이 matArray = cell (1, 5)을 사용하여 5 개의 행렬에 충분한 공간을 확보 했나요? Floris 외 여러분의 도움에 감사드립니다. –

-1

세로 연결을하려면 세미콜론이 필요합니다.

matArray = [A; B; C; D; E]; 
+1

행렬의 크기가 다르기 때문에이 방법은 작동하지 않습니다. –

+3

하지만'cellArray = {A; 비; 기음; 디; 이자형; }'괜찮을거야. –

관련 문제