oia_pulse.m

From Spinach Documentation Wiki
Jump to: navigation, search

Frequency-swept inversion pulse with offset-independent adiabaticity (Tannus and Garwood, JMR A 120, 133 (1996)). The user supplies an amplitude modulation function; the frequency sweep that makes the adiabaticity factor the same for every offset inside the sweep bandwidth is obtained by integrating the square of that amplitude function.

Syntax

   [Cx,Cy,durs,ints,amps,phis,frqs]=...
                     oia_pulse(npts,dur,bwidth,am_fun)

Parameters

      npts    - number of discretization points in
                the waveform
      dur     - pulse duration, seconds
    bwidth    - sweep bandwidth around zero frequ-
                ency, Hz
    am_fun    - amplitude modulation function handle,
                F1(tau) in Table 1 of the paper, that
                accepts a row vector of normalised ti-
                mes in the [-1,1] interval and returns
                a row vector of non-negative floating-
                point amplitudes that are positive at
                all interior points, the scale of which
                does not matter because the envelope is
                normalised to unit peak internally

Outputs

        Cx    - real part of the waveform, calibrated to
                the same adiabaticity factor as the
                inversion pulse in chirp_pulse.m, rad/s
        Cy    - imag part of the waveform, calibrated to
                the same adiabaticity factor as the
                inversion pulse in chirp_pulse.m, rad/s
      durs    - slice durations for piecewise-constant
                approximation, seconds
      ints    - interval durations for piecewise-linear
                approximation, seconds
      amps    - waveform amplitudes, rad/s
      phis    - waveform phases, radians
      frqs    - waveform frequencies, Hz

Examples

The example below (see examples/shaped_pulses/shaped_pulse_oia.m) builds the six amplitude functions from Table 1 of the paper for a 50 kHz sweep in 2 ms, and computes the inversion profiles of a single proton:

   [Cx,Cy,durs]=oia_pulse(1000,2e-3,50e3,@(tau)sech(asech(0.01)*tau.^8));
   rho=shaped_pulse_xy(spin_system,2*pi*offset*Lz,{Lx,Ly},{Cx,Cy},durs,rho0,'expv-pwc');

Notes

The amplitude functions in Table 1 of the paper, written with the 1% edge truncation used there, are

          Lorentz    @(tau)1./(1+99*tau.^2)
          HS         @(tau)sech(asech(0.01)*tau)
          Gauss      @(tau)exp(-log(100)*tau.^2)
          Hanning    @(tau)(1+cos(pi*tau))/2
          HSn        @(tau)sech(asech(0.01)*tau.^n)
          Sin^n      @(tau)1-abs(sin(pi*tau/2)).^n

and the hand drawn pulse in Figure 3 of the paper is any smooth function that is positive inside the pulse and may vanish only at its two ends.

The frequency sweep runs from -bwidth/2 to +bwidth/2; for a chirp pulse, which has a constant amplitude function, the output of this function coincides with chirp_pulse.m.

See also

bruker_write.m, cartesian2polar.m, grad_pulse.m, grad_sandw.m, pmlg5.m, polar2cartesian.m, pulse_shape.m, read_wave.m, restrans.m, rseq_compiler.m, rsequence.m, sawtooth.m, sech_pulse.m, shaped_pulse_af.m, shaped_pulse_xy.m, spinal.m, triwave.m, vg_pulse.m, wave_basis.m, chirp_pulse.m, Kernel_functions

Version 2.11, authors: Ilya Kuprov