Change matrix dimensions from 4D to 2 D : matrix manipulation
17 次查看(过去 30 天)
显示 更早的评论
Dear Matlab community, I am still trying to manipulate some of my output here by converting 4D matrices to 2D. I am having a hard time using "squeeze" and "reshape". I have this matrix (5by5 by 14680 by 30)[ this is basically 30 sets of 14680 of 5by5 matrices), and I need to extract only all the 1st columns from each 5by5 matrices, to have 14680 of (5*1) arrays/matrices, then transpose the (5*1)' so my final matrix has the following dimensions : Final (14680by5) two dimensions only with each row(:,1:5) has the elements from the extracted (5*1) arrays from the step before. I would really appreciate any help! thank you matlab community! Amine
3 个评论
Matt J
2016-12-12
It would also be good to mention in what way this post is not redundant with respect to
采纳的回答
Walter Roberson
2016-12-12
Output = squeeze( mat2cell( permute(YourMatrix,[3 1 2 4]), size(YourMatrix,3), size(YourMatrix,1), ones(1,size(YourMatrix,2)), ones(1,size(YourMatrix,4)) ) );
Output will now be a 5 x 30 cell array in which each element is a 14680 x 5 array formed by extracting first columns and making them rows.
2 个评论
Walter Roberson
2016-12-13
Output = reshape( permute( YourMatrix(:,1,:,), [3 1 4 2]), size(YourMatrix,3), []);
更多回答(1 个)
Kenny Kim
2016-12-13
This should make the matrix you were looking for:
datatemp = permute(squeeze(data(:,1,:,:)),[2 1 3]);
datatemp = reshape(datatemp,[size(datatemp,1),size(datatemp,2)*size(datatemp,3)]);
where data is the variable name for your 4D matrix.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrices and Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!