How to Convert a 3D Matrix into Cell Array of Desire Dimension
1 次查看(过去 30 天)
显示 更早的评论
采纳的回答
Paul
2023-6-27
A = rand(2,100,500); % example data
C = squeeze(num2cell(A,[1 2])); % create cell array
whos C
isequal(cat(3,C{:}),A) % verify
2 个评论
Paul
2023-6-27
A = rand(500,2,100);
C = num2cell(A,[2 3]); % line 1
At this point, each elment of C is 1 x 2 x 100 and is isequal to the corresponding slice of A. For example
size(C{293})
isequal(C{293},A(293,:,:))
To make each cell 2 x 100
C = cellfun(@(c) squeeze(c),C,'UniformOutput',false); % line 2
size(C)
size(C{293})
isequal(C{293},squeeze(A(293,:,:)))
Lines 1 and 2 can be combined into a single line if desired.
There may be a better way to do this.
更多回答(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!