Covert a cell to multidimensional matrix
Mostrar comentarios más antiguos
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]
.
.
.
Respuesta aceptada
Más respuestas (1)
Image Analyst
el 12 de Mzo. de 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.
1 comentario
Orion
el 14 de Mzo. de 2016
Categorías
Más información sobre Logical en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!