-
Notifications
You must be signed in to change notification settings - Fork 20
/
mrs_readLcmodelBasisRAW.m
66 lines (53 loc) · 1.74 KB
/
mrs_readLcmodelBasisRAW.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
function [FID, info]= mrs_readLcmodelBasisRAW( fileName )
% MRS_READLCMODELBASISRAW reads .RAW file for generating LCmodel .basis. which contains
% time domain data of a metabolite spectrum.
%
% FID = mrs_readLcmodelBasisRAW( fileName )
%
% ARGS :
% fileName = name of LCModel output .RAW file
% info = header information
%
% RETURNS:
% FID = time domain data
%
% EXAMPLE:
% >> [FID, info]= mrs_readLcmodelBasisRAW( fileName );
% >> figure; plot(real(fft(FID)));
%
% AUTHOR : Chen Chen
% PLACE : Sir Peter Mansfield Magnetic Resonance Centre (SPMMRC)
%
% Copyright (c) 2016, University of Nottingham. All rights reserved.
[~,~,ext]=fileparts(fileName);
if isempty(ext)==1
fileName=[fileName,'.RAW'];
end
fid=fopen(fileName,'r');
content=textscan(fid,'%s','delimiter','\n');
fclose(fid);
no_lines=size(content{1});
ln=no_lines+1;
for i=1:no_lines
line=content{1}{i};
if ~isempty(strfind(line, '$END'))
ln=i;
end
if ~isempty(strfind(line, 'Sweep'))
st1 = textscan(line, '%s', 'delimiter', ' ');
info.SW = str2double(st1{1}{end-1});
end
if ~isempty(strfind(line, 'Vector'))
st2 = textscan(line, '%s', 'delimiter', ' ');
info.samples = str2double(st2{1}{end-1});
end
if ~isempty(strfind(line, 'Field'))
st3 = textscan(line, '%s', 'delimiter', ' ');
info.B0 = str2double(st3{1}{end-1});
end
if i>ln
str_temp = textscan(line, '%s', 'delimiter', ' ');
FID(i-ln)=str2double(str_temp{1}{1})+1i.*str2double(str_temp{1}{end});
end
end
end