makeBlockPulse
Generates a block RF pulse with optional slice-selective capabilities. The function creates a Pulseq RF pulse object defining the characteristics of the pulse, including amplitude, duration, frequency and phase offsets. It can calculate the duration based on either the provided bandwidth or time-bandwidth product. It also handles optional parameters for slice selection (gradients) and returns both the RF pulse and a delay object to account for ringdown time.
Syntax
function [rf, delay] = makeBlockPulse(flip,varargin)
Calling Pattern
mr.makeBlockPulse(...)
mr.makeBlockPulse('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 flip angle of the RF pulse. |
pi/2 |
radians |
Name-Value Pair Arguments
| Parameter Name (string) |
Value Type |
Default |
Description |
Example |
system |
struct |
[] |
System parameters structure (e.g., mr.opts()). Provides parameters like rfRasterTime, rfDeadTime, rfRingdownTime needed for pulse generation. If empty, default system parameters are used. |
mr.opts() |
duration |
double |
0 |
Duration of the RF pulse. If 0, it will be calculated from bandwidth or timeBwProduct. (Units: seconds) |
0.004 |
freqOffset |
double |
0 |
Frequency offset of the RF pulse (Hz). (Units: Hz) |
100 |
phaseOffset |
double |
0 |
Phase offset of the RF pulse (radians). (Units: radians) |
pi/4 |
freqPPM |
double |
0 |
Frequency offset in parts per million (ppm) relative to the Larmor frequency. Can be used in addition to freqOffset. (Units: ppm) |
10 |
phasePPM |
double |
0 |
Phase offset in parts per million (ppm) relative to the Larmor frequency. Can be used in addition to phaseOffset. (Units: ppm) |
5 |
timeBwProduct |
double |
0 |
Time-bandwidth product of the RF pulse. If greater than zero, duration is calculated as timeBwProduct/bandwidth. |
1 |
bandwidth |
double |
0 |
Bandwidth of the RF pulse (Hz). If greater than zero, duration is calculated as 1/(4*bandwidth). (Units: Hz) |
2500 |
maxGrad |
double |
0 |
Maximum gradient amplitude for slice selection (Hz/m). (Units: Hz/m) |
50e6 |
maxSlew |
double |
0 |
Maximum gradient slew rate for slice selection (Hz/m/s). (Units: Hz/m/s) |
200e6 |
sliceThickness |
double |
0 |
Slice thickness for slice selection (meters). (Units: meters) |
0.005 |
delay |
double |
0 |
Additional delay after the RF pulse (seconds). (Units: seconds) |
0.001 |
use |
char |
'u' |
Specifies the pulse type; affects k-space trajectory calculation. Must be one of mr.getSupportedRfUse(). Valid values: mr.getSupportedRfUse() |
'excitation' |
Returns
| Output |
Value Type |
Description |
rf |
struct |
Pulseq RF pulse object containing the generated RF pulse parameters. |
delay |
struct |
Pulseq delay object accounting for RF ringdown time. |
Examples
% Create 90-degree hard pulse for FID sequence
rf = mr.makeBlockPulse(pi/2, 'Duration', 0.3e-3, 'system', system, 'use', 'excitation');
% Create short excitation pulse for 3D GRE
[rf, rfDelay] = mr.makeBlockPulse(8*pi/180, sys, 'Duration', 0.2e-3, 'use', 'excitation');
% Create 180-degree refocusing pulse for spin echo
rf180 = mr.makeBlockPulse(pi, lims, 'Duration', 500e-6, 'use', 'refocusing');
See Also
Sequence.addBlock, mr.opts, mr.getSupportedRfUse