3d to 2d matrix
1 次查看(过去 30 天)
显示 更早的评论
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 个评论
回答(4 个)
Azzi Abdelmalek
2012-10-15
编辑:Azzi Abdelmalek
2012-10-15
[r,c,w]=size(reflectances)
A=reshape(reflectances(:),r*c,[])'
2 个评论
Björn
2012-10-15
In order to make this work, you should change the first line into:
[r,c,w]=size(reflectances)
Alexandros Polykarpou
2012-10-15
1 个评论
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
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!