Skip to content
Snippets Groups Projects
Select Git revision
  • Issue/2438-adminApi
  • main default protected
  • Issue/3133-subProjectsChanges
  • dev protected
  • Issue/2489-addNotificationManagement
  • Issue/3085-useNewApiClient
  • Issue/3043-DataStorageNrwResource
  • Issue/3011-maintenanceMode
  • Issue/2446-addingResponsibleOrganization
  • Issue/2900-removeInsituteField
  • Issue/2981-dataPubInDb
  • Issue/2881-messageController
  • Issue/2921-changesToDataPublicationFeature
  • Issue/2926-regAppLogin
  • Issue/2672-fixSfbPidPointing
  • Issue/2875-devcontainer
  • Issue/2401-advisoryServiceUI2
  • Issue/2445-extractedMetadata
  • Issue/2829-useHrefProperty
  • Issue/xxxx-configurableApiHostname
  • Issue/2627-addPidRecord
  • v3.16.0
  • v3.15.0
  • v3.14.0
  • v3.13.0
  • v3.12.0
  • v3.11.0
  • v3.10.0
  • v3.9.0
  • v3.8.0
  • v3.7.0
  • v3.6.0
  • v3.5.0
  • v3.4.3
  • v3.4.2
  • v3.4.1
  • v3.4.0
  • v3.3.2-package.0
  • v3.3.1
  • v3.3.0
  • v3.2.1
41 results

.editorconfig

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    verstaerker.py 4.15 KiB
    import numpy as np
    import matplotlib.pyplot as plt
    import scipy.odr as sodr
    import scipy.stats as scs
    from my_methods import *
    import scipy.optimize
    
    delta_U = 0.00027#20/(2**12) /np.sqrt(12)
    errorscale = 1
    
    print('\n########## Verstaerker ohne C3 ##########')
    verstaerker = parseCSV('verstaerker_ohne_c3')
    t = verstaerker[:, 0]
    U_a = verstaerker[:, 1]
    U_b = verstaerker[:, 2]
    
    sigma_t = (t[1] - t[0])/np.sqrt(12) * np.ones_like(t)
    sigma_U_a = delta_U * np.ones_like(U_a)
    sigma_U_b = delta_U * np.ones_like(U_b)
    
    errorscale = 50
    plt.errorbar(t, U_a, xerr = sigma_t, yerr = sigma_U_a * errorscale, label = 'U_A', linestyle = '')
    plt.errorbar(t, U_b, xerr = sigma_t, yerr = sigma_U_b * errorscale, label = 'U_B', linestyle = '')
    plt.ylabel(r'$U [V]$')
    plt.xlabel(r'$t [ms]$')
    plt.title(r'Messdaten Gleichrichter')
    plt.grid()
    plt.legend()
    plt.tight_layout()
    plt.savefig('output/verstaerker_oszi_ohne_c3.pdf')
    plt.clf()
    
    print('########## fitting sine ##########')
    # odr does not converge here :(
    def sine2(x, a,b,c,d):
        return sine([a,b,c,d], x)
    
    popt_a, pcov_a = scipy.optimize.curve_fit(sine2, t, U_a, sigma = sigma_U_a, p0 = [2*np.pi, np.pi/2, 0.5, 0])
    popt_b, pcov_b = scipy.optimize.curve_fit(sine2, t, U_b, sigma = sigma_U_b, p0 = [2*np.pi, -np.pi/2, 2, 0])
    chi_a, p_a = chi_sq_dof_p(t, U_a, xerr = sigma_t, yerr = sigma_U_a, beta = popt_a, model = sine)
    chi_b, p_b = chi_sq_dof_p(t, U_b, xerr = sigma_t, yerr = sigma_U_b, beta = popt_b, model = sine)
    sigma_a = np.sqrt(pcov_a.diagonal())
    sigma_b = np.sqrt(pcov_b.diagonal())
    
    print('## U_a ##')
    print(popt_a)
    print(sigma_a)
    print(chi_a, p_a)
    print('## U_b ##')
    print(popt_b)
    print(sigma_b)
    print(chi_b, p_b)
    
    beta = popt_b[2] / popt_a[2]
    sigma_beta = np.sqrt((beta*sigma_b[2]/popt_b[2])**2 + (beta*sigma_a[2]/popt_a[2])**2)
    
    print(f'\n\t Verstärkung: {round(beta, sigma_beta)}')
    
    errorscale = 1
    plt.errorbar(t, U_a, xerr = sigma_t, yerr = sigma_U_a * errorscale, label = 'U_A', linestyle = '')
    plt.errorbar(t, U_b, xerr = sigma_t, yerr = sigma_U_b * errorscale, label = 'U_B', linestyle = '')
    plt.plot(t, sine(popt_a, t), label = 'a')
    plt.plot(t, sine(popt_b, t), label = 'b')
    plt.legend()
    plt.grid()
    plt.savefig('./output/verstaerker_ohne_c3_fit.pdf')
    plt.cla()
    
    print('\n\n########## Verstaerker mit C3 ##########')
    verstaerker = parseCSV('verstaerker_mit_c3')
    t = verstaerker[:, 0]
    U_a = verstaerker[:, 1]
    U_b = verstaerker[:, 2]
    
    sigma_t = (t[1] - t[0])/np.sqrt(12) * np.ones_like(t)
    sigma_U_a = delta_U * np.ones_like(U_a)
    sigma_U_b = delta_U * np.ones_like(U_b)
    
    errorscale = 50
    plt.errorbar(t, U_a, xerr = sigma_t, yerr = sigma_U_a * errorscale, label = 'U_A', linestyle = '')
    plt.errorbar(t, U_b, xerr = sigma_t, yerr = sigma_U_b * errorscale, label = 'U_B', linestyle = '')
    plt.ylabel(r'$U [V]$')
    plt.xlabel(r'$t [ms]$')
    plt.title(r'Messdaten Gleichrichter')
    plt.grid()
    plt.legend()
    plt.tight_layout()
    plt.savefig('output/verstaerker_oszi_ohne_c3.pdf')
    plt.clf()
    
    print('########## fitting sine ##########')
    # odr does not converge here :(
    def sine2(x, a,b,c,d):
        return sine([a,b,c,d], x)
    
    popt_a, pcov_a = scipy.optimize.curve_fit(sine2, t, U_a, sigma = sigma_U_a, p0 = [2*np.pi, np.pi/2, 0.05, 0])
    popt_b, pcov_b = scipy.optimize.curve_fit(sine2, t, U_b, sigma = sigma_U_b, p0 = [2*np.pi, -np.pi/2, 3.55, -0.3])
    chi_a, p_a = chi_sq_dof_p(t, U_a, xerr = sigma_t, yerr = sigma_U_a, beta = popt_a, model = sine)
    chi_b, p_b = chi_sq_dof_p(t, U_b, xerr = sigma_t, yerr = sigma_U_b, beta = popt_b, model = sine)
    sigma_a = np.sqrt(pcov_a.diagonal())
    sigma_b = np.sqrt(pcov_b.diagonal())
    
    print('## U_a ##')
    print(popt_a)
    print(sigma_a)
    print(chi_a, p_a)
    print('## U_b ##')
    print(popt_b)
    print(sigma_b)
    print(chi_b, p_b)
    
    beta = popt_b[2] / popt_a[2]
    sigma_beta = np.sqrt((beta*sigma_b[2]/popt_b[2])**2 + (beta*sigma_a[2]/popt_a[2])**2)
    
    print(f'\n\t Verstärkung: {round(beta, sigma_beta)}')
    
    errorscale = 1
    plt.errorbar(t, U_a, xerr = sigma_t, yerr = sigma_U_a * errorscale, label = 'U_A', linestyle = '')
    plt.errorbar(t, U_b, xerr = sigma_t, yerr = sigma_U_b * errorscale, label = 'U_B', linestyle = '')
    plt.plot(t, sine(popt_a, t), label = 'a')
    plt.plot(t, sine(popt_b, t), label = 'b')
    plt.legend()
    plt.grid()
    plt.savefig('./output/verstaerker_mit_c3_fit.pdf')
    plt.show()
    plt.cla()