Calculates pulse excitation profiles.
[offsets,M] = exciteprofile(t,IQ) [offsets,M] = exciteprofile(t,IQ,offsets)
This function computes the excitation profiles for the input pulse function using two-level density matrix dynamics starting from thermal equilibrium (Mx = 0, My = 0, Mz = 1).
The output contains the axis of frequency offsets (in MHz) in offsets
and an array with the three components of the magnetization vector after the pulse in M
(M = [Mx; My; Mz]
).
If you don't request any output, exciteprofile
plots the pulse shape and excitation profiles.
The input arguments to exciteprofile
are t
, the time axis (in microseconds) of the pulse, and IQ
, the pulse shape data with the in-phase component in the real part and the quadrature component in the imaginary part. The output of the function pulse can be used directly as input for exciteprofile
.
An optional third input argument, offsets
, can be used to define the axis of frequency offsets (in MHz) for which to compute the excitation profile. By default the frequency axis is defined over a range of approximately twice the pulse bandwidth around the center frequency with 201 points.
The excitation profile of a sech/tanh inversion pulse can be calculated by calling first the pulse function to compute the pulse shape and then exciteprofile
to obtain the excitation profile.
% Define pulse parameters Par.Type = 'sech/tanh'; Par.tp = 0.200; % microseconds Par.Frequency = [-50 50]; % MHz Par.beta = 10; Par.Flip = pi; % Calculate pulse shape [t,IQ] = pulse(Par); % Calculate excitation profile [offsets,M] = exciteprofile(t,IQ); % Plot the inversion profile (Mz/M0) plot(offsets,M(3,:)) xlabel('offsets (MHz)') ylabel('M_z/M_0')