Skip to content

makeSLRpulse

Generates a selective excitation RF pulse using the Shinnar-Le Roux (SLR) algorithm. This function acts as a wrapper for a Python function that utilizes the sigpy library. It designs RF pulses for various applications, including excitation, refocusing, and inversion.

Syntax

function [rf, gz, gzr, delay] = makeSLRpulse(flip,varargin)

Calling Pattern

mr.makeSLRpulse(...)
mr.makeSLRpulse('ParameterName', value, ...)

Parameters

This function accepts both positional parameters and name-value pairs.

Required Parameters

Parameter Name Value Type Description Example Units
flip double The desired flip angle of the RF pulse. pi/2 radians

Name-Value Pair Arguments

Parameter Name (string) Value Type Default Description Example
system struct [] A structure containing system parameters (e.g., from mr.opts()). If empty, default parameters will be used. mr.opts()
duration double 1e-3 The duration of the RF pulse. (Units: seconds) 0.004
freqOffset double 0 Frequency offset of the RF pulse. (Units: Hz) 100
phaseOffset double 0 Phase offset of the RF pulse. (Units: radians) pi/4
freqPPM double 0 Frequency offset in parts per million (ppm). (Units: ppm) 10
phasePPM double 0 Phase offset in parts per million (ppm). (Units: ppm) 5
timeBwProduct double 4 Time-bandwidth product of the pulse. 6
passbandRipple double 0.01 Passband ripple of the filter. 0.005
stopbandRipple double 0.01 Stopband ripple of the filter. 0.005
filterType char 'mt' Type of filter used for pulse design ('mt', 'ms', 'pm', 'min', 'max', 'ls'). 'ls'
apodization double 0 Apodization parameter (currently not used). 0.1
centerpos double 0.5 Center position (currently not used). 0.6
maxGrad double 0 Maximum gradient amplitude. (Units: Hz/m) 2000
maxSlew double 0 Maximum gradient slew rate. (Units: Hz/m/s) 100000
sliceThickness double 0 Slice thickness. (Units: meters) 0.005
delay double 0 Additional delay before the pulse. (Units: seconds) 0.001
dwell double 0 Dwell time (currently not used). (Units: seconds) 0.000001
use char 'excitation' Pulse type ('excitation', 'refocusing', etc.). 'refocusing'
pythonCmd char '' Python command (currently not used). ''

Returns

Output Value Type Description
rf struct The designed RF pulse (Pulseq sequence).
gz struct The slice-selective gradient (Pulseq sequence).
gzr struct The refocusing gradient (Pulseq sequence, might be empty).
delay double The total delay associated with the pulse

Examples

% 90-degree excitation pulse with detailed control
[rf_ex, gz, gzr] = mr.makeSLRpulse(pi/2, 'duration', rfDur1, 'SliceThickness', sliceThickness*sth_ex, ...
    'timeBwProduct', 5, 'dwell', rfDur1/500, 'passbandRipple', 1, 'stopbandRipple', 1e-2, ...
    'filterType', 'ms', 'system', system, 'use', 'excitation', 'PhaseOffset', pi/2);

% 180-degree refocusing pulse
[rf_ref, g_ref] = mr.makeSLRpulse(pi, 'duration', rfDurRef, 'PhaseOffset', pi/2, ...
    'SliceThickness', voxel(2), 'timeBwProduct', 6, 'passbandRipple', 1, 'stopbandRipple', 1e-2, ...
    'filterType', 'ms', 'system', system, 'use', 'refocusing');

% Multi-slice excitation
[rf_ex, g_ex, g_exReph] = mr.makeSLRpulse(pi/2, 'Duration', rfDurEx, ...
    'SliceThickness', voxel(1), 'timeBwProduct', 6, 'passbandRipple', 1, 'stopbandRipple', 1e-2, ...
    'filterType', 'ms', 'system', system, 'use', 'excitation');

See Also

mr.opts