Skip to content

makeAdiabaticPulse

Generates adiabatic inversion pulses of type 'hypsec' (hyperbolic secant) or 'wurst' (wideband, uniform rate, smooth truncation). It acts as a wrapper for a Python function (requiring the 'sigpy' library), creating RF and gradient waveforms. Note that this function is likely to only work on Linux systems.

Syntax

function [rf, gz, gzr, delay] = makeAdiabaticPulse(type,varargin)

Calling Pattern

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

Parameters

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

Required Parameters

Parameter Name Value Type Description Example Units
type string Specifies the type of adiabatic pulse to generate. Must be either 'hypsec' or 'wurst'. 'hypsec'

Name-Value Pair Arguments

Parameter Name (string) Value Type Default Description Example
system struct [] System parameters (e.g., from mr.opts()). Provides system limits for gradient waveforms (if maxGrad and maxSlew are not specified). mr.opts()
duration double 10e-3 Total duration of the pulse. (Units: seconds) 0.01
freqOffset double 0 Frequency offset of the pulse. (Units: Hz) 100
phaseOffset double 0 Phase offset of the pulse. (Units: radians) pi/2
freqPPM double 0 Frequency offset in parts per million. (Units: ppm) 0.1
phasePPM double 0 Phase offset in parts per million. (Units: ppm) 0.1
beta double 800 AM waveform parameter (relevant for 'hypsec' pulse). 1000
mu double 4.9 Constant determining the amplitude of the frequency sweep (relevant for 'hypsec' pulse). 5.0
n_fac double 40 Power to exponentiate within the AM term (relevant for 'wurst' pulse). 30
bandwidth double 40000 Pulse bandwidth (relevant for 'wurst' pulse). (Units: Hz) 20000
adiabaticity double 4 Adiabaticity factor. 5
maxGrad double 0 Maximum gradient amplitude. (Units: Hz/m) 1000
maxSlew double 0 Maximum gradient slew rate. (Units: Hz/m/s) 100000
sliceThickness double 0 Slice thickness. (Units: meters) 0.005
delay double 0 Delay after the pulse. (Units: seconds) 0.001
dwell double 0 Dwell time. (Units: seconds) 1e-6
use string 'u' Specifies how the pulse will be used. See mr.getSupportedRfUse() for options. 'excitation'
pythonCmd string '' Command to execute the Python function (for advanced use cases). ''

Returns

Output Value Type Description
rf struct Pulseq RF waveform structure.
gz struct Pulseq slice-select gradient waveform structure.
gzr struct Pulseq refocusing gradient waveform structure (if applicable).
delay double Delay time (seconds).

Examples

% Example 1: Create hyperbolic secant adiabatic inversion pulse
rf180 = mr.makeAdiabaticPulse('hypsec', sys, 'Duration', 10.24e-3, 'dwell', 1e-5, 'use', 'inversion');

% Example 2: Create WURST refocusing pulse with custom parameters
rf_180_1 = mr.makeAdiabaticPulse('wurst', 'duration', rf_180_duration, 'bandwidth', 6000, 'dwell', rf_180_duration/500, 'n_fac', 20, 'use', 'refocusing', 'system', system);

% Example 3: Create adiabatic pulse with system parameters
rf180 = mr.makeAdiabaticPulse('hypsec', sys, 'Duration', 10.24e-3, 'dwell', 1e-5, 'use', 'inversion');

See Also

mr.opts, mr.makeExtendedTrapezoid, mr.getSupportedRfUse