how to convert 4D into 3D?

27 Ansichten (letzte 30 Tage)
mohd akmal masud
mohd akmal masud am 30 Jul. 2022
Bearbeitet: mohd akmal masud am 31 Jul. 2022
Dear all,
the name file is LiverTS399.mat
how to convert it into 3D?
I tried use this command, but still 4D in workspace
load('LiverTS399.mat')
split = squeeze(cropVol);

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 31 Jul. 2022
split = reshape(cropVol, size(cropVol,1), size(cropVol,2), size(cropVol,3)*size(cropVol,4));
This would give you a 3D volume in which the 4th dimension has been spread out onto the third dimension.
or perhaps you want
split = squeeze(num2cell(cropVol, [1 2 3]));
This would give you a cell array in which each element was a 3D slice.
  1 Kommentar
mohd akmal masud
mohd akmal masud am 31 Jul. 2022
Bearbeitet: mohd akmal masud am 31 Jul. 2022
this is correct
split = reshape(cropVol, size(cropVol,1), size(cropVol,2), size(cropVol,3)*size(cropVol,4));
thank you so much @Walter Roberson
but the real size is [184 192 152] but I got is [184 192 608]
I try use this one but got Error
split = reshape(cropVol, size(cropVol,1), size(cropVol,2), size(cropVol,3));
Error using reshape
Number of elements must not change. Use [] as one of the size inputs to automatically calculate the appropriate size for that
dimension.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Matt J
Matt J am 31 Jul. 2022
If you mean you want the i-th 3D frame of the 4D data, then,
frame_i=cropVol(:,:,i)
  1 Kommentar
mohd akmal masud
mohd akmal masud am 31 Jul. 2022
Bearbeitet: mohd akmal masud am 31 Jul. 2022
thank you @Matt J
I use
frame_i=cropVol(:,:,:,4)
then give what I want

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Convert Image Type finden Sie in Help Center und File Exchange

Produkte


Version

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by