%% Plot theory only S = asymptote(S_smaller,S_larger,f,Fc); P = mod(P,pi); figure; ax1 = subplot(2,1,1); semilogx(f,A,f,S) ylabel('Magnitude [dB]','Fontsize',10); xlabel('Frequency [Hz]','Fontsize',10); xlim([f_start,f_stop]); legend('Theory','Asymptote'); grid on title('RC-circuit Bodeplot Theory') ax2 = subplot(2,1,2); semilogx(f,P) ylabel('Phase [rad]','Fontsize',10); xlabel('Frequency [Hz]','Fontsize',10); xlim([f_start,f_stop]); legend('Theory'); grid on linkaxes([ax1,ax2],'x') %% Run the measurements if theory_only == false data = transferFunction(oscilloscope,functiongenerator,f_start,f_stop,amplitude,n_steps,n_measurements); %% Plotting %% Process the data A_mean = mean(data.magnitude,1); P_mean = mean(data.phase,1); A_std = zeros(1,data.steps); P_std = zeros(1,data.steps); if data.measurements > 1 A_std = std(data.magnitude,1); P_std = std(data.phase,1); end A_mean_log = 20*log10(A_mean); A_std_log_neg = A_mean_log - 20*log10(A_mean - A_std); A_std_log_pos = 20*log10(A_mean + A_std) - A_mean_log; %% plot average measurement, theory and asymptote. figure; ax1 = subplot(2,1,1); semilogx(data.frequency,A_mean_log,f,A,f,S) ylabel('Magnitude [dB]','Fontsize',10); xlabel('Frequency [Hz]','Fontsize',10); legend('Average Measurement','Theory','Asymptote'); grid on title('RLC-circuit Bodeplot') ax2 = subplot(2,1,2); semilogx(data.frequency,P_mean,f,P) ylabel('Phase [rad]','Fontsize',10); xlabel('Frequency [Hz]','Fontsize',10); legend('Average Measurement','Theory'); grid on linkaxes([ax1,ax2],'x') %% plot avearage measurement with standard deviation and theory. figure; ax1 = subplot(2,1,1); errorbar(data.frequency,A_mean_log,A_std_log_neg,A_std_log_pos) ax1.XScale = 'log'; hold on semilogx(f,A) hold off ylabel('Magnitude [dB]','Fontsize',10); xlabel('Frequency [Hz]','Fontsize',10); legend('Average Measurement','Theory'); grid on title('RLC-circuit Bodeplot') ax2 = subplot(2,1,2); errorbar(data.frequency,P_mean,P_std); ax2.XScale = 'log'; hold on semilogx(f,P) hold off ylabel('Phase [rad]','Fontsize',10); xlabel('Frequency [Hz]','Fontsize',10); legend('Average Measurement','Theory'); grid on linkaxes([ax1,ax2],'x') %% plot avearage measurement with standard deviation. figure; ax1 = subplot(2,1,1); errorbar(data.frequency,A_mean_log,A_std_log_neg,A_std_log_pos) ax1.XScale = 'log'; ylabel('Magnitude [dB]','Fontsize',10); xlabel('Frequency [Hz]','Fontsize',10); legend('Average Measurement'); grid on title('RLC-circuit Bodeplot') ax2 = subplot(2,1,2); errorbar(data.frequency,P_mean,P_std); ax2.XScale = 'log'; ylabel('Phase [rad]','Fontsize',10); xlabel('Frequency [Hz]','Fontsize',10); legend('Average Measurement'); grid on linkaxes([ax1,ax2],'x') end