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
Bandwidth compensation, pulse function
-
- 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:
The bandwidth compensation implemented in pulse() is based on the magnitude response and does not use the phase information.
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))
-
- Newbie
- Posts: 2
- Joined: Tue May 05, 2015 9:54 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
Thank you very much! I was in fact using v5.1; I downloaded v5.2, and it works!
Best regards,
Matt