2013-05-30 2 views
1

저는 아직 newbe입니다. 행렬의 배열에 관해서는 매우 쉬운 질문을 가지고 있습니다.Matlab은 행렬의 배열을 채 웁니다.

>> matrix 
1 678 543 
2 676 541 
3 543 987 
4 543 98 
1 433 54 
2 908 32 
3 457 54 
4 235 21 

어떻게 동일한 크기의 행렬의 배열을 만들 : 나는 다음과 같은 n 행의 행렬이? Array of Matrices in MATLAB 아마 많은 다른 사람의 : 즉 array{i,1}

이 질문의 복제입니다.

내게 불리한 점은 고정 차원 행렬 배열을 채우는 방법입니다.
모든 matrix의 열 1에있는 사람과 matrixsize 찾기 :

>>array{1,1} 
1 678 543 
2 676 541 
3 543 987 
4 543 98 

여기 내 시도 될 수 있도록. cell 배열을 만들려면 각 줄을보고 1과 같으면 만들려는 행렬의 크기와 동일한 0의 array{i,1}을 만듭니다 (내 경우 4x3).
1과 같지 않은 경우 행렬의 처음 네 값을 배열에 삽입하십시오.

루프가 없으면 더 빠른 방법이 있습니까?

+1

[이 답변] (http://stackoverflow.com/q/466972#467199)이 3-D 매트릭스 컬렉션에 또 다른 매트릭스를 추가하는 방법을 보여줍니다. 대신 [셀 배열] (http://www.mathworks.com/help/matlab/cell-arrays.html)을 사용할 수도 있지만 효율성은 떨어집니다. –

+0

그게 당신이 좋아하는지는 모르겠지만, array = matrix (1, :)을 좋아한다면, 첫 번째 줄의 모든 요소를 ​​배열에 복사합니다. – Akatosh

+0

@EitanT : 감사합니다.하지만 다른 차원 행렬을 사용할 경우 코드를 변경할 수 있도록 셀 배열을 사용하고 싶습니다. – seli

답변

1

또한 mat2cell를 사용할 수 있습니다

mat2cell(matrix, [4 4]) 
+0

각 하위 행렬의 행이 연속적이지 않기 때문에 이는 작동하지 않습니다. 적어도 원래의 행렬을 변형해야합니다. –

+0

@EitanT 무슨 뜻인지 모르겠다. 이것은 행렬을 첫 번째 차원에서 '4x3'과 다른 '4x3'으로 나눕니다. 맞습니까? – pm89

+0

각 행렬의 첫 번째 열에있는 모든 값은 같아야한다고 생각합니다. 그래서 첫 번째 행렬은 첫 번째 열에 "1"이있는 모든 행을 구성해야하며 두 번째 행렬은 첫 번째 열에 "2"가있는 모든 행을 포함해야합니다. _etc _... –

관련 문제