Bandwidth compensation, pulse function

General forum for EasySpin: questions, how to's, etc.
Post Reply
donohue321
Newbie
Posts: 2
Joined: Tue May 05, 2015 9:54 am

Bandwidth compensation, pulse function

Post by donohue321 »

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
Claudia
Newbie
Posts: 1
Joined: Wed Oct 11, 2017 8:33 am

Re: Bandwidth compensation, pulse function

Post by Claudia »

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 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

[tideal,IQideal] = pulse(Par);

% Resonator bandwidth compensation
ResonatorFrequency = 34.000; % GHz
ResonatorQL = 200;
mwFreq = 34.002; % GHz
f = 33.5:0.001:34.5;
H = abs(1./(1+1i*ResonatorQL*(f/ResonatorFrequency-ResonatorFrequency./f)));

Par.mwFreq = mwFreq; % GHz
Par.FrequencyResponse = [f; H];

[t,IQ] = pulse(Par);

% Compare results
plot(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.
donohue321
Newbie
Posts: 2
Joined: Tue May 05, 2015 9:54 am

Re: Bandwidth compensation, pulse function

Post by donohue321 »

Claudia,

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

Best regards,
Matt
Post Reply