How to convert .mat to .nii?
13 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi!
I have a set of .mat files and I would like to convet them to .nii (Nifti) to conduct some GLM analysis.
The problem I have with these files is that when I load them in MATLAB, they are 1x111 cell. When I open a cell, it is 1x1435 double.
I tried converting them using make_nii but it tells me the files are not in the correct format. Any suggestions about how to do this?
Thank you so much,
Carlotta.
0 Kommentare
Antworten (1)
Anudeep Kumar
am 15 Mai 2025
Hi Carlotta,
I believe the issue lies in the input not being of the shape as expected by ‘make_nii’ function. The .nii files are expected to be 2D/3D/4D arrays. You can achieve this by reshaping your cell into a 2D or 3D or 4D data based on your use case
According to the information provided we can reshape your data into a 2D array of size 111x1435 using ‘cell2mat’ and save it as nii.
Below is a short code snippet to do the same:
% Load the .mat file
data = load('example_data.mat');
mycell = data.example_cells; % Use the variable name from the .mat file
% Convert to matrix [111 x 1435]
mat_data = cell2mat(mycell'); % Transpose to get [111 x 1435]
nii = make_nii(mat_data);
save_nii(nii, 'example_output.nii');
You can reshape your data using ‘reshape’ to convert data into 3D as below :
% For demonstration, let's reshape to [35, 41, 111] since 35*41=1435
mat_data_reshaped = reshape(mat_data, [111, 35,41]);
mat_data_reshaped = permute(mat_data_reshaped, [2, 3, 1]); % [X Y T]
Here are the documentations for ‘cell2mat’, ’reshape’, and ‘permute‘ for your better understanding of these functions and use them as per your requirement.
Hope this helps!
0 Kommentare
Siehe auch
Kategorien
Mehr zu Convert Image Type finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!