2013-11-26 5 views
0

나는 이미지 데이터를 다루고 있으며 크기가 231 by 384 인 5 개의 채널 컨트 리뷰 션으로 구성된 240 개의 이미지가 있습니다.이 행렬의 크기는 이제 240,231,384,5이고, 이것을 (231 * 240,384,5)로 지정하십시오. 나는 데이터를 왜곡하지 않고 '재구성'할 수 없다. 어떻게해야합니까?matlab에서 다차원 행렬의 일부 연결하기

+3

왜'reshape (data, 240 * 231,384,5)'가 아닌가? –

+0

왜 그렇게하고 싶지는 모르겠다. 첫 번째 차원의 수단은 아무 의미가 없다. – Vuwox

+1

@Maria : M (2, :, :, :)의 출력은 무엇입니까? 첫 번째 사진의 두 번째 행 또는 두 번째 사진의 첫 번째 행? – Daniel

답변

0

다음은 행렬을 감안할 때

test = [1:16]; % sample data 
test1 = reshape(test, 4, 4); % rearrange to 4x4 
% this has a vertical arrangement which is prob not what you have 

[m, n] = size(test1); % get dims 
r = 2; % horizontal width/numb of cols 
% this prob closer to what you have 
test2 = test1(:,1:r)' % flip to horizontal order 
test3 = reshape(test2, m*r, 1) % rearrange to vertical 
+0

Daniel R이 말한대로 찾으려는 예제 출력을 포함하십시오. 당신이 무엇을하려고하는지 명확하지 않습니다. 무슨 왜곡이 말하는거야? 귀하의 데이터는 어떻게 생겼습니까? 기대하는 결과로 코드의 일부를 줄 수 있습니까? – athypes

0

을 무엇을하려고 나의 추측 :

n1 = 240; n2 = 231; n3 = 384; n4 = 5; 
A = randn(n1, n2, n3, n4); 

나는 위의 루이스에 의해 제안 당신이 찾고있는 솔루션 중 하나입니다 같아요

B = reshape(A, n1 * n2, n3, n4); 

또는

C = reshape(permute(A, [2 1 3 4]), n1 * n2, n3, n4); 

그렇지 않으면 문제가 무엇인지 더 잘 설명해야합니다.

관련 문제