registerGradEvent¶
Pre-registers a gradient event in the sequence object's library for performance optimization. This method stores gradient events (trapezoids or arbitrary gradients) in an internal library and returns a unique ID that can be used for fast event retrieval in loops. This significantly accelerates sequence assembly when the same gradient event is used multiple times.
Syntax¶
function [id, shapeIDs] = registerGradEvent(event)
Calling Pattern¶
[id, shapeIDs] = seq.registerGradEvent(gradientEvent)
Parameters¶
Required Parameters¶
| Name | Type | Default | Description | Example |
|---|---|---|---|---|
event |
struct | A gradient event structure created by makeTrapezoid, makeArbitraryGrad, or scaleGrad | makeTrapezoid('x', 'Area', 1e-4) |
Returns¶
| Output | Type | Description |
|---|---|---|
id |
double | Unique identifier for the registered gradient event in the library |
shapeIDs |
array | Array of shape IDs for gradient waveform components (optional output) |
Usage Notes¶
- Pre-registering gradient events is particularly useful in loops where the same gradient is used repeatedly
- The returned ID can be stored in the event structure as
event.idfor faster addBlock operations - This method automatically handles gradient shape compression for efficient storage
- Supports both trapezoidal and arbitrary gradient waveforms
Examples¶
% From MPRAGE sequence: pre-register objects that do not change while looping
gslSp.id = seq.registerGradEvent(gslSp);
groSp.id = seq.registerGradEvent(groSp);
gro1.id = seq.registerGradEvent(gro1);
% Pre-register phase-encoding gradients that repeat in the inner loop
gpe2je = mr.scaleGrad(gpe2, pe2Steps(PEsamp(count)));
gpe2je.id = seq.registerGradEvent(gpe2je);
gpe2jr = mr.scaleGrad(gpe2, -pe2Steps(PEsamp(count)));
gpe2jr.id = seq.registerGradEvent(gpe2jr);
% Use pre-registered gradients in sequence assembly
for i = 1:N(ax.n2) % inner loop for partition encoding
if (i == 1)
seq.addBlock(rf);
else
seq.addBlock(rf, groSp, mr.scaleGrad(gpe1, -pe1Steps(i-1)), gpe2jr);
end
seq.addBlock(adc, gro1, mr.scaleGrad(gpe1, pe1Steps(i)), gpe2je);
end
See Also¶
registerRfEvent, registerLabelEvent, makeTrapezoid, makeArbitraryGrad, scaleGrad, addBlock