How do I loop over subjects in a script with 3d arrays?
Afficher commentaires plus anciens
Dear experts, I have written a script to read .nii files (volumetric 3d images), one of it being binary. I made sure the dimensions are equal, because I needed to multiply the arrays and calculate the overlap. The script works. However, I want the script to loop over 77 subjects in a directory.
This is the script for one subject:
lobes = spm_read_vol(spm_vol('xx/xx/x.nii')); %this is a mask with dim [51 75 55]
seg = spm_read_vols(spm_vol('/xx/xx/Images/wseg.nii')); %this is a binary 3D object with dim [153 225 165]
segf=flipud(seg); %I used this, because somehow my object is mirrored
seg2=griddedInterpolant(segf);
seg3=seg2({linspace(1, size(segf,1),51),linspace(1,size(segf,2),75),linspace(1,size(segf,3),55)}); %resizes the original 3D image to get the same dimensions as the mask image (lobes).
for j=1:55
locseg(:,:,j)=lobes(:,:,j).*seg3(:,:,j); %multiply 3D arrays with a for loop
end
location=mode(nonzeros(locseg)) %final output of interest
ps.: I don't have the image processing toolbox, and I am 100% sure this is not the easiest way to get the wanted output, but my options are limited.
Any help is appreciated!
5 commentaires
Praveen Iyyappan Valsala
le 25 Avr 2018
The only tricky part is to get the complete filepath. do both seg and lobes vary for each subject?
Gülizar Kaya
le 25 Avr 2018
Praveen Iyyappan Valsala
le 25 Avr 2018
Remove this.
seg=cell(length(ID_CODES), 1); % predefines the size of the matrix
Use this for dp(More clean)
dp=fullfile(ID_CODES(i).folder,ID_CODES(i).name,'/Images/wseg.nii');
as seg is 3D array now it will becomes 4D array
seg(:,:,:,i)=spm_read_vols(spm_vol(dp));
Gülizar Kaya
le 25 Avr 2018
Modifié(e) : Gülizar Kaya
le 25 Avr 2018
Praveen Iyyappan Valsala
le 26 Avr 2018
as you don't need any variable other than location.
%get all things for dp
for 1=1:#subjects
dp=...
seg= read(dp) (don't append)
rest of the code as in your question
location(:,:,:,i)=mode(...) (put that many colons as dimension of the location w/o looping)
end
Réponses (0)
Catégories
En savoir plus sur Resizing and Reshaping Matrices dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!