How to convert 3D matrix to 2D with a specific format
정보
이 질문은 마감되었습니다. 편집하거나 답변을 올리려면 질문을 다시 여십시오.
이전 댓글 표시
Hello all :)
I have a [1000,64,10] matrix and want to change it to a [10000,64] in a way that the first 1000 rows in 2D matrix belong to [:,:,1] in 3D matrix and the 2nd 1000 rows to [:,:,2] and so on, in other words I want the element (1001,1) in the new matrix corresponds to (1,1,2) in the old one and (2001,1) corresponds to (1,1,3) and so on.
Is there any function applying this rule?
Thanks :)
댓글 수: 0
답변 (2개)
Azzi Abdelmalek
2014년 3월 4일
A=rand(1000,64,10);
B=permute(A,[ 2 1 3]);
out=B(:,:)'
댓글 수: 5
RH
2014년 3월 4일
Azzi Abdelmalek
2014년 3월 4일
Let us take short example
A(:,:,1)=[1 2;3 4;5 6];
A(:,:,2)=[10 20;30 40;50 60]
A(:,:,3)=[100 200 ;300 400;500 600]
A(:,:,1) =
1 2
3 4
5 6
A(:,:,2) =
10 20
30 40
50 60
A(:,:,3) =
100 200
300 400
500 600
B=permute(A,[ 2 1 3])
B(:,:,1) =
1 3 5
2 4 6
B(:,:,2) =
10 30 50
20 40 60
B(:,:,3) =
100 300 500
200 400 600
B(:,:)'
ans =
1 2
3 4
5 6
10 20
30 40
50 60
100 200
300 400
500 600
Azzi Abdelmalek
2014년 3월 5일
RH, I posted a short example, I think my code is doing what you asked. If not, please, post the expected result from my short example
RH
2014년 3월 5일
Andrei Bobrov
2014년 3월 5일
편집: Andrei Bobrov
2014년 3월 5일
A = randi(100,3,4,4);
a1 = num2cell(A,[1 2]);
out = cat(1,a1{:});
or
out = reshape(permute(A,[1 3 2]),[],size(A,2));
댓글 수: 1
RH
2014년 3월 5일
이 질문은 마감되었습니다.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!