Erf function in complex domain problems

Dear all,
form one month i'm looking for an erf function in the complex domani to be able to plot a complex function representing cavity ringdown in a micro resonator.
This is my script: %% Cavity ringdown function % Valutazione dei parametri del cavity ringdown a partire da dati % sperimentali % % Biblio: % - "Determination of coupling regime of high-Q % resonators and optical gain of highly selective % amplifiers", Dumeige et al. Vol. 25, No. 12/December 2008/J. Opt. Soc. Am. B %% clear %% Experimental data c_light = 3e8; % Quality factor % Q = omega_risonanza * tau/2 % Q = freq_risonanza/delta_freq
% Valori presi da articolo Feron 2008 per testare il nostro script matlab Q = 1*10^8; Qe = 2*Q; Q0 = 2*Q;
% Resonance wavelenght and frequency lambda0 = 1.55*10^(-6); omega0 = 2*pi*c_light/lambda0; delta_omega0 = omega0/Q; % Total photon lifetime tau/2 tau = 2*Q/omega0; tau_e = 2*tau; tau_0 = tau_e; % Velocita' di riferimento, e' la velocita' con cui in un tempo tau viene % percorsa la FWHM, infatti: % v0_t = delta_12/(tau/2) = (1/pi*tau)/(tau/2) = 2/(pi*tau^2) V0_t = 2/pi/(tau)^2;
% HWHM delta_12 = omega0/(2*pi)/2/Q; % Definita come sotto rappresenta la FWHM della risonanza, infaffi delta_12 % e' la HWHM, quindi FWHM = 2*HWHM, se moltiplico per 2pi ottengo la % larghezza in frequenza angolare % OMEGA = 2*pi*2*delta_12; OMEGA = delta_omega0; % Ts_ref rappresenta il Tempo con cui viene percorsa la HWHM (delta_12) con velocita' V0_t Ts_ref = tau/2;
% Scala per asse dei tempi t/tau t_scale = [400,20,8,4]; % Vs is the frequency sweeping speed % Experimentally Vs is about [3 GHz /5 ms] % Velocita' di scansione riferite a V0_t A_Vs = [0.0075,0.3,3,30]; Vs_vect = A_Vs.*V0_t*2*pi;
n_points = 1*10^(3); t = zeros(length(t_scale),n_points); T = zeros(length(t_scale),n_points); X = zeros(length(t_scale),n_points);
for iiii = 1:length(t_scale) % tempo t(iiii,:) = linspace(0,t_scale(iiii)*tau,n_points); Vs = Vs_vect(iiii); % Larghezza scansione attorno alla risonanza omega0, la definisco un certo numero di volte la % larghezza della riga, ma e' solo una scelta % Ad esempio con una risonanza larga 2MHz, si effettua una scansione di 20 % MHz attorno A_OMEGA_scan = 10;
OMEGA_scan = A_OMEGA_scan*OMEGA; % Frequenza di inizio scansione omega_i = omega0 - OMEGA_scan/2; % Ts Ts = A_OMEGA_scan/A_Vs(iiii)*tau; % Frequenza di scansione % omega_t = omega_i + OMEGA_scan/(Ts).*t(iiii,:); omega_t = omega_i + Vs/(2).*t(iiii,:);
% Initial detuning deltai = -OMEGA_scan/(4*pi);
% Excitation frequency phi_t = omega_t.*t(iiii,:); %% Temporal variation S0 = 1; S_int(iiii,:) = S0*exp(1i*phi_t); %% f_t(iiii,:) = -sqrt(1i*pi/(2*Vs)).*exp((-1i*(2*pi*deltai - 1i./tau).^2)./(2*Vs)).*erfz((1i/tau - 2*pi*deltai - Vs.*t(iiii,:))./(sqrt(2*1i*Vs)));
u_t(iiii,:) = sqrt(2./tau_e).*S0.*exp(1i*omega0*t(iiii,:) - t(iiii,:)/tau).*(f_t(iiii,:) - f_t(iiii,1) + 1./(1i*(omega_t - omega0) + 1./tau)); %% S_out(iiii,:) = -S_int(iiii,:) + sqrt(2./tau_e)*u_t(iiii,:); %% Transmission T(iiii,:) = abs(S_out(iiii,:)./S0).^2;
x(iiii,:) = t(iiii,:)./tau;
end %% Immagini
scrsz = get(0,'ScreenSize');
figure('Position',[0 33 scrsz(3) scrsz(4)*9/10]); subplot 221 plot(x(1,:),T(1,:)); title(['Transmission function. Q = ' num2str(Q,'%10.2e') '; {\lambda} = ' num2str(lambda0*10^6) ... ' {\mu}m; T_s = ' num2str(Ts*10^9) ' ns; {\tau} = ' num2str(tau*10^9) ' ns; {\tau}_e = ' num2str(tau_e*10^9) ' ns']); xlabel('t/{\tau}'); ylabel('T'); grid on; legend(['Vs/V0 = ' num2str(A_Vs(1))]);
subplot 222 plot(x(2,:),T(2,:)); title(['Transmission function. Q = ' num2str(Q,'%10.2e') '; {\lambda} = ' num2str(lambda0*10^6) ... ' {\mu}m; T_s = ' num2str(Ts*10^9) ' ns; {\tau} = ' num2str(tau*10^9) ' ns; {\tau}_e = ' num2str(tau_e*10^9) ' ns']); xlabel('t/{\tau}'); ylabel('T'); grid on; legend(['Vs/V0 = ' num2str(A_Vs(2))]);
subplot 223 plot(x(3,:),T(3,:)); title(['Transmission function. Q = ' num2str(Q,'%10.2e') '; {\lambda} = ' num2str(lambda0*10^6) ... ' {\mu}m; T_s = ' num2str(Ts*10^9) ' ns; {\tau} = ' num2str(tau*10^9) ' ns; {\tau}_e = ' num2str(tau_e*10^9) ' ns']); xlabel('t/{\tau}'); ylabel('T'); grid on; legend(['Vs/V0 = ' num2str(A_Vs(3))]);
subplot 224 plot(x(4,:),T(4,:)); title(['Transmission function. Q = ' num2str(Q,'%10.2e') '; {\lambda} = ' num2str(lambda0*10^6) ... ' {\mu}m; T_s = ' num2str(Ts*10^9) ' ns; {\tau} = ' num2str(tau*10^9) ' ns; {\tau}_e = ' num2str(tau_e*10^9) ' ns']); xlabel('t/{\tau}'); ylabel('T'); grid on; legend(['Vs/V0 = ' num2str(A_Vs(4))]);
%% Controllo dei NaN disp(['T(NaN) = ' num2str(sum(sum(isnan(T(1,:)))))]); disp(['f(t)(NaN) = ' num2str(sum(sum(isnan(f_t(1,:)))))]); disp(['u(t)(NaN) = ' num2str(sum(sum(isnan(u_t(1,:)))))]); disp(['Sin(NaN) = ' num2str(sum(sum(isnan(S_int(1,:)))))]); disp(['Sout(NaN) = ' num2str(sum(sum(isnan(S_out(1,:)))))]);
%%% However i have some problems both in plot than trying to fit experimental data with the "T" function. I think some problems can come from the "erfz" function. Can you give some suggestions?
All the best Andrea

回答(0 个)

类别

帮助中心File Exchange 中查找有关 Networks 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by