Added a function to calculate the e-folding time from the noise spectrum.
This commit is contained in:
parent
0d2ce1aa76
commit
9b22207a2d
@ -22,13 +22,13 @@ dirACData = 'C:\\Users\\Karthik\\Documents\\GitRepositories\\Calculations\\Time-
|
|||||||
|
|
||||||
%------------------------------------------------------------------------- %
|
%------------------------------------------------------------------------- %
|
||||||
bgsignal = load( [ dirACData '20240915_Background_AC'] ); %
|
bgsignal = load( [ dirACData '20240915_Background_AC'] ); %
|
||||||
dcsignal = load( [ dirDCData '20240915_1V_-3Mod_DC_PID_Inactive'] ); %
|
dcsignal = load( [ dirDCData '20240915_5V_1.1Mod_DC_PID_Inactive'] ); %
|
||||||
acsignal_1 = load( [ dirACData '20240915_1V_-3Mod_AC_PID_Inactive'] ); %
|
acsignal_1 = load( [ dirACData '20240915_5V_1.1Mod_AC_PID_Inactive'] ); %
|
||||||
acsignal_2 = load( [ dirACData '20240915_1V_-3Mod_AC_PID_Active'] ); %
|
acsignal_2 = load( [ dirACData '20240915_5V_1.1Mod_AC_PID_Active'] ); %
|
||||||
|
|
||||||
label_0 = 'Background'; %
|
label_0 = 'Background'; %
|
||||||
label_1 = 'Power = 1 V, Modulation = -3.0 V, PID Inactive'; %
|
label_1 = 'Power = 5 V, Modulation = 1.1 V, PID Inactive'; %
|
||||||
label_2 = 'Power = 1 V, Modulation = -3.0 V, PID Active'; %
|
label_2 = 'Power = 5 V, Modulation = 1.1 V, PID Active'; %
|
||||||
%------------------------------------------------------------------------- %
|
%------------------------------------------------------------------------- %
|
||||||
|
|
||||||
%% Read out the important parameters
|
%% Read out the important parameters
|
||||||
@ -81,9 +81,12 @@ spsd_src_smooth_2 = smooth(spsd_src_2,span,'moving');
|
|||||||
spsd_bg_smooth = smooth(spsd_bg, span,'moving');
|
spsd_bg_smooth = smooth(spsd_bg, span,'moving');
|
||||||
|
|
||||||
% calculates the RIN given in dB/Hz; the factor delta_f is needed to convert from dB/bin into dB/Hz
|
% calculates the RIN given in dB/Hz; the factor delta_f is needed to convert from dB/bin into dB/Hz
|
||||||
RIN_src_smooth_1 = 10*log10(spsd_src_smooth_1/(average_P*delta_f));
|
spsd_src_smooth_rel_1 = spsd_src_smooth_1/(average_P*delta_f);
|
||||||
RIN_src_smooth_2 = 10*log10(spsd_src_smooth_2/(average_P*delta_f));
|
spsd_src_smooth_rel_2 = spsd_src_smooth_2/(average_P*delta_f);
|
||||||
RIN_bg_smooth = 10*log10(spsd_bg_smooth /(average_P*delta_f));
|
spsd_bg_smooth_rel = spsd_bg_smooth /(average_P*delta_f);
|
||||||
|
RIN_src_smooth_1 = 10*log10(spsd_src_smooth_rel_1);
|
||||||
|
RIN_src_smooth_2 = 10*log10(spsd_src_smooth_rel_2);
|
||||||
|
RIN_bg_smooth = 10*log10(spsd_bg_smooth_rel);
|
||||||
|
|
||||||
% creates an array for the frequencies up to half the sampling frequency
|
% creates an array for the frequencies up to half the sampling frequency
|
||||||
f = f_s/2 * linspace(0,1,N/2+1);
|
f = f_s/2 * linspace(0,1,N/2+1);
|
||||||
@ -125,6 +128,68 @@ grid on
|
|||||||
% saveas(f_,'FileName','png'); %
|
% saveas(f_,'FileName','png'); %
|
||||||
%------------------------------------------%
|
%------------------------------------------%
|
||||||
|
|
||||||
|
%%
|
||||||
|
|
||||||
|
compute_eFoldingTime(f_smooth, spsd_src_smooth_rel_2, 100, 1000, label_2)
|
||||||
|
|
||||||
|
%%
|
||||||
|
|
||||||
|
compute_eFoldingTime(f_smooth, spsd_src_smooth_rel_2, 1000, 5000, label_2)
|
||||||
|
|
||||||
|
%%
|
||||||
|
|
||||||
|
function compute_eFoldingTime(faxis, Skk, fstart, fend, data_str)
|
||||||
|
% computes the energy e-folding time: time to increase the energy by a factor e in sec.
|
||||||
|
|
||||||
|
[~,idx_ini] = min(abs(faxis-(2 * fstart))); % Find closest index for 2*fstart
|
||||||
|
[~,idx_fin] = min(abs(faxis-(2 * fend))); % Find closest index for 2*fend
|
||||||
|
Skk = Skk(idx_ini:idx_fin); % Slice Skk array
|
||||||
|
freqs = linspace(fstart, fend, length(Skk));
|
||||||
|
|
||||||
|
% Calculate e-folding time
|
||||||
|
e_folding_time = arrayfun(@(idx) 1 / (pi^2 * freqs(idx)^2 * Skk(idx)), 1:length(freqs));
|
||||||
|
|
||||||
|
% Plotting
|
||||||
|
figure('Position', [100, 100, 1200, 800]);
|
||||||
|
semilogx(freqs, e_folding_time, 'r', 'LineWidth', 2, 'DisplayName', data_str);
|
||||||
|
hold on;
|
||||||
|
|
||||||
|
grid on;
|
||||||
|
set(gca, 'GridLineStyle', '-'); % Thin grid lines
|
||||||
|
|
||||||
|
% Create gridlines for multiples of 10
|
||||||
|
x_multiples_of_10 = 10.^floor(log10(min(freqs(freqs > 0))):log10(max(freqs(freqs > 0))));
|
||||||
|
for val = x_multiples_of_10
|
||||||
|
xline(val, 'k-', 'LineWidth', 2); % Thick lines for multiples of 10
|
||||||
|
end
|
||||||
|
|
||||||
|
legend('show', 'Location', 'southwest', 'FontSize', 12);
|
||||||
|
xlabel('Frequency [Hz]', 'FontSize', 14);
|
||||||
|
ylabel('$T_e$ [s]', 'Interpreter', 'latex', 'FontSize', 14);
|
||||||
|
title(sprintf('Lower Bound= %.5f s', min(e_folding_time)), 'FontSize', 14);
|
||||||
|
|
||||||
|
set(gca, 'XScale', 'log');
|
||||||
|
set(gca, 'FontSize', 12);
|
||||||
|
|
||||||
|
hold off;
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ dirACData = 'C:\\Users\\Karthik\\Documents\\GitRepositories\\Calculations\\Time-
|
|||||||
% - the AC coupled y-t signal to obtain the fluctuations
|
% - the AC coupled y-t signal to obtain the fluctuations
|
||||||
% - the AC coupled y-t signal with the beam blocked to obtain the background fluctuations
|
% - the AC coupled y-t signal with the beam blocked to obtain the background fluctuations
|
||||||
|
|
||||||
%-------------------------------------------------------------------------%
|
%--------------------------------------------------------------------------------------------------%
|
||||||
dcsignal = load( [ dirDCData 'IPG1064_100W'] ); %
|
dcsignal = load( [ dirDCData 'IPG1064_100W'] ); %
|
||||||
acsignal = load( [ dirACData 'IPG1064_100W'] ); %
|
acsignal = load( [ dirACData 'IPG1064_100W'] ); %
|
||||||
bgsignal = load( [ dirACData 'Background'] ); %
|
bgsignal = load( [ dirACData 'Background'] ); %
|
||||||
@ -29,7 +29,7 @@ label_0 = 'Picoscope noise floor'; %
|
|||||||
label_1 = 'Background (Picoscope + InGaAs PIN PD + Transimp amp + Buffer amp + power supply)'; %
|
label_1 = 'Background (Picoscope + InGaAs PIN PD + Transimp amp + Buffer amp + power supply)'; %
|
||||||
label_2 = 'Laser output power=100 W (Incident on PD=1mW)'; %
|
label_2 = 'Laser output power=100 W (Incident on PD=1mW)'; %
|
||||||
label_3 = 'Shot-Noise limit @ 1 mW incident power'; %
|
label_3 = 'Shot-Noise limit @ 1 mW incident power'; %
|
||||||
%-------------------------------------------------------------------------%
|
%------------------------------------------------------------------------------------------------- %
|
||||||
|
|
||||||
%% Read out the important parameters
|
%% Read out the important parameters
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user