3d to 2d matrix
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
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.
0 Commenti
Risposte (4)
Azzi Abdelmalek
il 15 Ott 2012
Modificato: Azzi Abdelmalek
il 15 Ott 2012
[r,c,w]=size(reflectances)
A=reshape(reflectances(:),r*c,[])'
2 Commenti
Björn
il 15 Ott 2012
In order to make this work, you should change the first line into:
[r,c,w]=size(reflectances)
Björn
il 15 Ott 2012
Modificato: Björn
il 15 Ott 2012
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.
0 Commenti
Alexandros Polykarpou
il 15 Ott 2012
1 Commento
Björn
il 15 Ott 2012
Modificato: Björn
il 15 Ott 2012
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
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!