forked from sharktank-bic/qMTLab
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsf_cache.m
77 lines (70 loc) · 1.55 KB
/
sf_cache.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
66
67
68
69
70
71
72
73
74
75
76
77
function p = sf_cache(angles, offsets, T2, pulse_name, duration, TR, bw, s)
% function p = sf_cache(angles, offsets, T2, pulse_name, duration, TR, bw, s)
%
% or
%
% function p = sf_cache('filename.mat')
if nargin == 0
p.angles = [];
p.offsets = [];
p.T2 = [];
p.pulse_name = '';
p.duration = 0;
p.TR = 0;
p.bw = 0;
p.pulses = {};
p.values = [];
p = class(p, 'sf_cache');
elseif isa(angles, 'sf_cache')
p = angles;
elseif isa(angles, 'char')
%which sf
%clear sf;
load(angles);
%p.angles = getfield(sf, 'angles');
p.angles = sf.angles;
p.offsets = getfield(sf,'offsets');
p.T2 = getfield(sf, 'T2');
p.pulse_name = getfield(sf, 'pulse_name');
p.duration = getfield(sf, 'duration');
p.TR = getfield(sf, 'TR');
p.bw = getfield(sf, 'bw');
%p.s = getfield(sf, 's');
p.pulses = {};
p.values = getfield(sf, 'values');
p = class(p, 'sf_cache');
p.pulses = create_pulses(p);
else
p.angles = angles;
p.offsets = offsets;
p.T2 = T2;
p.pulse_name = pulse_name;
p.duration = duration;
p.TR = TR;
p.bw = bw;
if strmatch(pulse_name, 'fermi')
p.s = s;
end
p.pulses = {};
p.values = [];
p = class(p, 'sf_cache');
p.pulses = create_pulses(p);
p.values = compute_values(p);
end
function values = compute_values(p)
N = length(p.angles);
M = length(p.offsets);
P = length(p.T2);
values = zeros(N, M, P);
for i = 1:N
i
for j = 1:M
%save sf_temp.mat
j
for k = 1:P
q = set_offset(p.pulses{i}, p.offsets(j));
values(i,j,k) = sim_sf_o(q, 10, p.T2(k), p.offsets(j));
end
end
end
return