concept-collection / seqlab
seqlab / src / examples / fid.m
41 lines · 1.2 KBBlameHistoryRaw
1% Free induction decay (FID) — the simplest pulseq sequence.
2% A non-selective excitation pulse followed by a long readout,
3% repeated 16 times. Adapted from pulseq's demoSeq/writeFid.m.
5system = mr.opts('rfRingdownTime', 20e-6, 'rfDeadTime', 100e-6, ...
6 'adcDeadTime', 20e-6);
8seq = mr.Sequence(system);
9Nx = 4096; % samples per readout
10Nrep = 16; % repetitions
12% 90-degree block (hard) excitation pulse
13rf = mr.makeBlockPulse(pi/2, 'Duration', 0.3e-3, 'system', system, ...
14 'use', 'excitation');
16% ADC: long readout to capture the full decay
17adc = mr.makeAdc(Nx, 'Duration', 512e-3, 'system', system, ...
18 'delay', system.adcDeadTime);
19delayTE = 20e-3;
20delayTR = 5000e-3;
22assert(delayTE >= mr.calcDuration(rf));
23assert(delayTR >= mr.calcDuration(adc));
25for i = 1:Nrep
26 seq.addBlock(rf, mr.makeDelay(delayTE));
27 seq.addBlock(adc, mr.makeDelay(delayTR));
28end
30[ok, error_report] = seq.checkTiming();
31if ok
32 fprintf('Timing check passed successfully\n');
33else
34 fprintf('Timing check failed! Error listing follows:\n');
35 for k = 1:numel(error_report)
36 fprintf('%s\n', error_report{k});
37 end
38end
40seq.setDefinition('Name', 'fid');
41seq.write('fid.seq');