## Bandwidth compensation, pulse function

General forum for EasySpin: questions, how to's, etc.

### Bandwidth compensation, pulse function

Dear EasySpin Community, regarding the pulse function:

I’d like to calibrate my initial waveform to generate an offset independent adiabatic pulse, incident on the resonant frequency of the resonator. I have experimentally obtained the magnitude response of the spectrometer’s transfer function.

Below is what I have written:

%Pulse Parameters
Par.Type = 'sech/tanh'; % pulse shape
Par.tp = 0.200; % pulse length, µs
Par.Frequency = [-40 40]; % pulse frequency sweep range, MHz
Par.beta = 10; % truncation parameter, used as (beta/tp)
Par.Flip = pi/2; % pulse flip angle
Par.TimeStep = 250e-6; %Discrete time step,µs
Par.mwFreq=34.002; %Spectrometer frequency, GHz
Par.FrequencyResponse = [SpecF;Nutation]; %Spectrometer frequency during transient nutations,GHz; Magnitude FFT of nutations, GHz. These two vectors define the real magnitude response.

Opt.Offsets = -40:1:40;

[t,IQ] = pulse(Par,Opt);

where SpecF & Nutation define my experimental magnitude response.

I know I’m making a small mistake somewhere, as the “IQ” output from pulse is the perfect, uncompensated sech/tanh. Moreover, separate of EasySpin, I’ve generated an estimation of the phase response of the spectrometer’s transfer function; should this be input into my calculation?

Please advise regarding any noticeable errors in my script, so that I might apply resonator compensation to my initial waveform, and thanks for any consideration in advance.

Matt
donohue321
Newbie

Posts: 2
Joined: Tue May 05, 2015 9:54 am

### Re: Bandwidth compensation, pulse function

Hi Matt,
Your code looks fine to me. Are you using EasySpin 5.2? There has been a small change in the syntax for the bandwidth compensation in pulse() from version 5.1 to 5.2 (also, Opt.Offset is not a valid option for pulse() in the latest version). The following code shows the difference between the ideal sech/tanh pulse and the pulse compensated for a simulated magnitude response:

Code: Select all
`clear Par% Pulse ParametersPar.Type = 'sech/tanh'; % pulse shapePar.tp = 0.200; % pulse length, µsPar.Frequency = [-40 40]; % pulse frequency sweep range, MHzPar.beta = 10; % truncation parameter, used as (beta/tp)Par.Flip = pi/2; % pulse flip anglePar.TimeStep = 250e-6; % discrete time step, µs[tideal,IQideal] = pulse(Par);% Resonator bandwidth compensationResonatorFrequency = 34.000; % GHzResonatorQL = 200;mwFreq = 34.002; % GHzf = 33.5:0.001:34.5;H = abs(1./(1+1i*ResonatorQL*(f/ResonatorFrequency-ResonatorFrequency./f)));Par.mwFreq = mwFreq; % GHzPar.FrequencyResponse = [f; H];[t,IQ] = pulse(Par);% Compare resultsplot(tideal,real(IQideal),t,real(IQ))`

The bandwidth compensation implemented in pulse() is based on the magnitude response and does not use the phase information.
Claudia
Newbie

Posts: 1
Joined: Wed Oct 11, 2017 8:33 am

### Re: Bandwidth compensation, pulse function

Claudia,

Thank you very much! I was in fact using v5.1; I downloaded v5.2, and it works!

Best regards,
Matt
donohue321
Newbie

Posts: 2
Joined: Tue May 05, 2015 9:54 am