exciteprofile

Calculates pulse excitation profiles.

Syntax
[offsets,M] = exciteprofile(t,IQ)
[offsets,M] = exciteprofile(t,IQ,offsets)
Description

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.

Example

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')
See also

pulse, evolve, saffron