, 우리는이 같은 배열의 차원에 걸쳐 축소 할 수 있습니다 :특정 차원 집합에서 배열을 축소하는 방법은 무엇입니까? 매트랩
M = rand(3,4,5);
myvec = M(:); % gives a 60-element vector
나는 그것이 serialising 또는 병합라는 생각. 요소의 순서는 먼저 dim1, dim2, dim3이므로 [M(1,1,1); M(2,1,1); M(3,1,1); M(1,2,1); ...]
이됩니다.
는하지만 내가 원하는 것은 단지 처음 두 차원에서 붕괴입니다 :
mymatrix = M(:: , :); % something that works like this?
는 12 × 5 매트릭스를 제공 할 수 있습니다. 따라서 예를 들어, 당신은
[M(1,1,1) M(1,1,2) M(1,1,3) M(1,1,4) M(1,1,5)
M(2,1,1) M(2,1,2) M(2,1,3) M(2,1,4) M(2,1,5)
M(3,1,1) M(3,1,2) M(3,1,3) M(3,1,4) M(3,1,5)
M(1,2,1) M(1,2,2) M(1,2,3) M(1,2,4) M(1,2,5)
...
]
를 얻을 수 mymatrix
의 첫 번째 차원은 "평평"1 원래 M
의 2 차원하지만, 다른 치수를 보존되도록.
5 차원 배열의 "중간 3 차원"에 대해 실제로이를 수행해야하므로 일반 솔루션이 좋습니다! 예 : W=rand(N,N,N,N,N); mymatrix = W(:, :::, :)
은 내가 의미하는 바를 알면 N x N^3 x N
행렬을 제공해야합니다.
감사
치수 길이 인수 중 하나에 대한 자리 표시로 대괄호 ([]
)와
감사합니다. 변형에 대해 생각해야합니다. 추신 : 나는 tmp = permute (M, [1,5,2,3,4]);,'mymatrix = tmp (:, :)'와 같이 작동하는 다른 방법을 생각했다. 그것이 항상 작동하는지 확실하지 않은가요? 물론'재구성 '은 ** 많이 선호 **합니다. –