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에 대해 자세히 알아보기

질문:

2015년 12월 4일

Community Treasure Hunt

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

Start Hunting!

Translated by