-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtopic_SliceProfile.m
61 lines (44 loc) · 1.47 KB
/
topic_SliceProfile.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
clear all
close all
clc
addpath ./auxil_fun/
addpath ./compiled/
addpath ./RF/
% Protocol Para
Prot_Thickness = 10; % [ mm ]
% Phantom Para
T1 = -1; % [ ms ] % set -1 to turn off Relaxation
T2 = -1; % [ ms ]
% Simulation Box Parameter
BOXPARA = auxil_BoxParaEnum_Init();
BOXPARA.PosXNum = 1; % Number of Position along X direction
BOXPARA.PosYNum = 1; % Number of Position along y direction
BOXPARA.PosZNum = 2000; % Number of Position along z direction
BOXPARA.PosXLim = [-1, 1] * 0; % Simulation Box Boundary in x
BOXPARA.PosYLim = [-1, 1] * 0; % Simulation Box Boundary in y
BOXPARA.PosZLim = [-1, 1] * 100; % Simulation Box Boundary in z
BOXPARA.B0Arr = 0;
BOXPARA.B1Arr = 1;
BOXPARA.T1Arr = -1;
BOXPARA.T2Arr = -1;
BOXPARA = auxil_BoxParaEnum_Process(BOXPARA);
% Sequence Pulse Parameter
PSD_RF_MT_Duration = 20480;
% Prep RF Pulse
RF_REF = [];
load('GAUSS5120_B375.mat');
RF_REF = rf;
SBB_MT_RF = auxil_PSD_RF_Load_Siemens(RF_REF, PSD_RF_MT_Duration, 90/180*pi, Prot_Thickness);
SBB_MT_RF.phs_arr = SBB_MT_RF.phs_arr;
% figure(1), auxil_PSD_Plot(SBB_MT_RF); % Uncomment to check the Pulse Sequence Time Series
% SpinState
SPINSTATE = auxil_SpinState_Init_BoxParaEnum(BOXPARA);
% Run Simulation
SPINSTATE = auxil_Simu_Static_B0_B1_Relax_3D(SPINSTATE, SBB_MT_RF);
% Plot
SpinX = squeeze(SPINSTATE.SpinX);
SpinY = squeeze(SPINSTATE.SpinY);
SpinZ = squeeze(SPINSTATE.SpinZ);
PosZ = squeeze(SPINSTATE.PosZ);
SpinXY = (SpinX.^2 + SpinY.^2).^0.5;
plot(PosZ, SpinXY, PosZ, SpinZ); grid on