Covert a cell to multidimensional matrix
Show older comments
I have a 50 X 1 cell array, A, and each cell contains an m x 100 matrix, where m is variable and not the same for each of the cells. I would like to convert this cell array to a 3D matrix, Anew(M,100,50), where M is the first dimension of the matrix with biggest rows, and pad zero for the small matrices. I tried cell2mat but it concatenated the cell into a 2D matrix ([...],100). I also tried:
for ii=1:50
Anew(:,:,ii)=A{ii};
end
but I got
Subscripted assignment dimension mismatch.
error. Does anyone know how it can be done?
Thanks
This is the first 6 cells of A:
A =
[ 44x100 double]
[ 80x100 double]
[103x100 double]
[ 96x100 double]
[ 94x100 double]
[ 92x100 double]
.
.
.
Accepted Answer
More Answers (1)
Image Analyst
on 12 Mar 2016
Try this (untested) intuitive looping method:
Anew = zeros(m, 100, 50); % Initialize
for thisCellIndex = 1 : 50
% Extract contents of this particular cell.
% It will be a 1 x 100 row vector.
thismx100Array = A{thisCellIndex};
finalZ = min([size(Anew, 3), length(thismx100Array )]);
% Put this row vector into a column vector along the "Z" dimension.
for z = 1 : finalZ
Anew(1:m, 1:100, ii) = thismx100Array(z);
end
end
It's hard to do much more without your actual data.
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!