SaveAsCsv.m
1 %========================================================================= 2 % Function to save all simulation .cpx files in subfolders of 3 % the ../../data/mrxcat_simulations folder to csv files 4 % This file is derived from DisplayMRXCAT.m of the MRXCAT software 5 %========================================================================= 6 function [data, fname] = SaveAsCsv() 7 cd('../../data/mrxcat_simulations'); 8 foldernames = glob ("snr*"); 9 10 for i = 1:numel(foldernames); 11 [~, foldername] = fileparts (foldernames{i}); 12 cd(foldername); 13 files = glob('*.cpx'); 14 [~, file] = fileparts (files{1}); 15 count = size(files)(1); 16 dest = strcat(pwd, "/csvs"); 17 18 fname = strcat(pwd, "/", file); 19 20 %------------------------------------------------------------------------- 21 % load MRXCAT parameter file (acquisition matrix, coils, ...) and update 22 %------------------------------------------------------------------------- 23 load( [fname(1:end) '_par.mat'] ); 24 25 %------------------------------------------------------------------------- 26 % get MRXCAT data 27 %------------------------------------------------------------------------- 28 fid = fopen( [fname '.cpx'] ); 29 data = fread(fid,inf,'float','l'); 30 fclose(fid); 31 %------------------------------------------------------------------------- 32 % get sensitivity maps 33 %------------------------------------------------------------------------- 34 fid = fopen( [fname(1:end) '.sen'] ); 35 sen = fread(fid,inf,'float','l'); 36 fclose(fid); 37 38 %------------------------------------------------------------------------- 39 % reformat to complex data (image and sensitivities) 40 %------------------------------------------------------------------------- 41 data = reshape( data, 2, []); 42 data = data(1,:)+1i*data(2,:); 43 data = reshape( data, Par.acq_matrix(1), Par.acq_matrix(2), Par.acq_matrix(3), Par.ncoils, []); 44 data = permute( data, [1 2 3 5 4] ); 45 sen = reshape( sen, 2, []); 46 sen = sen(1,:)+1i*sen(2,:); 47 sen = reshape( sen, Par.acq_matrix(1), Par.acq_matrix(2), Par.acq_matrix(3), Par.ncoils, []); 48 sen = permute( sen, [1 2 3 5 4] ); 49 50 %------------------------------------------------------------------------- 51 % "coil-combine" data 52 %------------------------------------------------------------------------- 53 sos = sum(data./sen,5); 54 clear sen; 55 56 SaveData(sos, dest, file); 57 58 cd(".."); 59 end 60 end 61 62 63 64 %========================================================================= 65 % Save data as csv 66 %========================================================================= 67 function SaveData(data, dest, file) 68 numberimages = numel(data)/(size(data,1)*size(data,2)); 69 imageposno = 1; 70 71 if isreal(data), 72 RealData = 1; % real data 73 elseif isreal(data*i), 74 RealData = -1; % imaginary data 75 else 76 RealData = 0; % complex data 77 end 78 79 if ~exist(dest) 80 mkdir(dest); 81 end 82 83 for imageno=1:numberimages 84 if RealData==1, % real data 85 csvwrite([dest "/" file num2str(imageno) '.csv'], ( (data(:,:,imageno)) )); #transpose( (data(:,:,imageno)) )); 86 elseif RealData==-1, % imaginary data 87 csvwrite([dest "/" file num2str(imageno) '.csv'], ( imag(data(:,:,imageno)) )); #transpose( imag(data(:,:,imageno)) )) 88 else % complex data 89 csvwrite([dest "/" file num2str(imageno) '.csv'], ( abs(data(:,:,imageno)) )); #transpose( abs(data(:,:,imageno)) )); 90 end 91 end 92 end 93