3d to 2d matrix

Hi guys,
I have an [r c w] matrix where r & c are the pixels of a hyperspectral picture and the w are the number of layers of the picture.
I want to turn this matrix to [w , x] matrix.
For example. I want the values of w for the pixel 1,1 below 1. and the values of w of the pixel 1,2 below 2 until the whole table is finished.
I thought of the following commands but I'm not sure if it works because my matrix is massive.
[r,c,w]=size(reflectances) A=reshape(reflectances,w,r*c);
Thank you.

답변 (4개)

Azzi Abdelmalek
Azzi Abdelmalek 2012년 10월 15일
편집: Azzi Abdelmalek 2012년 10월 15일

1 개 추천

[r,c,w]=size(reflectances)
A=reshape(reflectances(:),r*c,[])'

댓글 수: 2

Björn
Björn 2012년 10월 15일
In order to make this work, you should change the first line into:
[r,c,w]=size(reflectances)
Azzi Abdelmalek
Azzi Abdelmalek 2012년 10월 15일
Thanks Björn, when I changed my code, I missed it

댓글을 달려면 로그인하십시오.

Björn
Björn 2012년 10월 15일
편집: Björn 2012년 10월 15일

0 개 추천

This might do the trick:
A=reshape(reflectances,1,r*c,w);
A=reshape(A,r*c,w)';
You first convert it to a [1,r*c,w] matrix. After this you convert it to a [r*c,w] matrix and taking the transpose resulting in an [w,r*c] array with the values you wanted.
Andrei Bobrov
Andrei Bobrov 2012년 10월 15일

0 개 추천

A = reshape(reflectances.',[],w).';

댓글 수: 1

Björn
Björn 2012년 10월 15일
Taking the transpose of an array with more than 2 dimensions does not work

댓글을 달려면 로그인하십시오.

Alexandros Polykarpou
Alexandros Polykarpou 2012년 10월 15일

0 개 추천

IS there anyway to check if the final form of the matrix is what I want. The matrix is quite big... so any ideas? ans =
192000 356

댓글 수: 1

Björn
Björn 2012년 10월 15일
편집: Björn 2012년 10월 15일
Just check a small portion of the initial matrix and the final matrix:
reflectances(1:5,1:5,1:5)
A(1:25,1:5)
Compare these answers with each other. You can also try to check it with a dummy-matrix. Create a small matrix with random values, and then check the final answer. I did that with this code:
test_matrix=randn(4,5,3)
Then apply the method you want to try (replace 'reflectances' in the code by 'test_matrix')
And then you can easily check if the first values of each third dimension coincides with the values of the first column, and so on.
NOTE: I also fixed a typo in my first answer

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Hyperspectral Image Processing에 대해 자세히 알아보기

질문:

2012년 10월 15일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by