문제

내가 가졌다 고 가정했다 1-12 매트릭스와 나는 그것을 a에 크기를 조정하고 싶었다 4-3 행렬. 어떻게 할 수 있습니까?

내 현재 솔루션은 일종의 추악합니다.

for n = 1:(length(mat)/3)
    out(n,1:3) = mat( ((n-1)*3 + 1):((n-1)*3 + 3) );
end

더 좋은 방법이 있습니까?

도움이 되었습니까?

해결책

reshape 물론 적절한 솔루션입니다. @gnovice.

좋은 기능 reshape 그것은 이것을 허용한다는 것입니다 :

A = 1:12;
B = reshape(A,4,[]);
B =
     1     5     9
     2     6    10
     3     7    11
     4     8    12

그래서 당신이 얼마나 많은 열이 있을지 모른다면, reshape 당신을 위해 그것을 계산할 것입니다. 비슷하게, reshape 당신이 그것을 떠나면 행의 수를 채우게됩니다.

C = reshape(A,[],4)
C =
     1     4     7    10
     2     5     8    11
     3     6     9    12

다른 팁

시도해보십시오 재구성 기능:

A = (1-by-12 matrix);
B = reshape(A,4,3);

매트릭스에 유의하십시오 요소로 가득 차 있습니다 열별 방식으로 (즉, 열은 위에서 아래로 채워져 왼쪽으로 오른쪽으로 이동).

예시:

>> A = 1:12;
>> B = reshape(A,4,3)

B =

     1     5     9
     2     6    10
     3     7    11
     4     8    12

Gnovice의 솔루션을 확장하려면 :

다른 순서의 행렬 구성이 필요한 경우 Transpose ( '연산자) 또는 permute() 전화 한 후 차원 순서를 변경합니다 reshape().

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top