Creating a 3-dim matrix from an array and a 2-dim matrices array
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Valentina Baljak
am 22 Apr. 2015
Kommentiert: Valentina Baljak
am 22 Apr. 2015
I am trying to create a 3-dimensional matrix (e.g. 80 x 300 x 350) from an array (dim 80) and an array of 80 300 x 350 matrices. The second dimension in matrices may vary, so it needs to be padded by 0.
Any hint is welcome.
I have tried this:
for i=1:80
res(i,:,:)=cell2mat(s1(i));
end
and got this:
Subscripted assignment dimension mismatch.
Thank you
2 Kommentare
James Tursa
am 22 Apr. 2015
If you are using the 300 x 350 slices downstream in your code, you might consider making those the first two dimensions of your 3D matrix so the slices are contiguous in memory. E.g., a 300 x 350 x 80 array.
Akzeptierte Antwort
Sean de Wolski
am 22 Apr. 2015
Close! but using :,: means that it must fill the whole thing, not pad with zeros. Instead, only fill to the size:
for i=1:80
sii = cell2mat(s1(i));
res(i,1:size(sii,1),1:size(sii,2)) = permute(sii,[3 1 2]); % permute to write orientation
end
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!