reading complex data into a matlab array
18 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Alex
am 27 Nov. 2011
Beantwortet: Matthew Parry
am 7 Nov. 2019
Hi,
To keep it short: How can you read complex doubles into a matlab array from raw data files. To keep it long, see below.
I have a raw data file taken from an MR scanner. I have been using the IDL language to read/reconstruct it but my files have become large and the memory management in IDL is no longer good enough. I need to know how to read this data into matlab. The problem is in the data-type. IDL can create complex double arrays but it seems matlab cannot. The data is arranged as follows: header-->data-->header-->data... etc. I know how many bytes the headers are so i can move a pointer using fseek/fread etc however I do not know how to read in the data into an array. Each data point is a 16 byte complex number. If I dont move the pointers correctly then the data becomes scrambled etc. The data parts are structured: real --> IM --> real --> IM and so on. When I read in 16 bytes into IDL I get the correct values. It would be so simple if there were a complex double datatype in matlab. I've thought about parsing the data as I read it into a real and im matrix and then combining them afterwards but there must be an easier way?
0 Kommentare
Akzeptierte Antwort
Jared
am 27 Nov. 2011
If I understand the question correctly, something along these lines should work (although don't trust me on the fread syntax - it's been a while):
fp = fopen(file_of_interest);
% code for reading the header, etc.
complex_matrix = complex(ones(final_size),ones(final_size));
for i=1:length(complex_matrix(:))
complex_matrix(i) = complex(fread(fp,8,'*double'),fread(fp,8,'*double'));
end
% whatever other finalization you need to do
fclose(fp);
2 Kommentare
A
am 7 Feb. 2012
What part of this solves the header->data->header->data?
I'm dealing with the same issue but not complex numbers. What exactly is the '8' in fread(fp,8,'*double") telling it to do? In that spot I currently have my matrix size [4x4]. Is there a way to not read in the header parts?
Weitere Antworten (1)
Matthew Parry
am 7 Nov. 2019
From R2019a onwards you can use the function readmatrix().
0 Kommentare
Siehe auch
Kategorien
Mehr zu MRI 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!