%% 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('RC-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('RC-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('RC-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