-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathSSFP_SP_SteadyState.m
49 lines (32 loc) · 1.07 KB
/
SSFP_SP_SteadyState.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
%%% Steady-state bSSFP solution for single-pool.
% Inputs: FA: Flip angle array (radians).
% TR: Repetition time (seconds).
% PC: Phase-cycling increment (e.g. 0 or pi).
% Model parameter values (all in SI).
% Outpus: Mss: Signal vector.
function Mss_Sig = SSFP_SP_SteadyState(FA, TR, PC, varargin)
for ii = 1:length(varargin)
if strcmpi(varargin{ii},'T1')
T1 = varargin{ii+1};
end
if strcmpi(varargin{ii},'T2')
T2 = varargin{ii+1};
end
if strcmpi(varargin{ii},'M0')
M0 = varargin{ii+1};
end
end
R1 = 1/T1; R2 = 1/T2;
C = [0 ; 0 ; (M0 * R1)];
A = [-R2 0 0 ; 0 -R2 0 ; 0 0 -R1];
PC_M = [cos(PC) -sin(PC) 0 ; sin(PC) cos(PC) 0 ; 0 0 1];
Mss = zeros(length(FA),3);
Mss_Sig = zeros(length(FA),1);
AinvC = A\C;
em = expm(A * TR);
for jj = 1:length(FA)
T = [1 0 0 ; 0 cos(FA(jj)) sin(FA(jj)) ; 0 -sin(FA(jj)) cos(FA(jj))];
Mss(jj,:) = (PC_M - (em * T))^-1 * (em - eye(3)) * AinvC;
Mss_Sig(jj) = abs((Mss(jj,1) + (1i * Mss(jj,2))));
end
end