def c_open(file): """ Zum Einlesen der CASSY-Messungen Parameter: file - Messdatei returns: f, U, I """ data = cassy.CassyDaten(file) R = data.messung(1).datenreihe("R_B1").werte U = data.messung(1).datenreihe("U_A1").werte return np.array(R), np.array(U)
def c_open(file): """ Zum Einlesen der CASSY-Messungen Parameter: file - Messdatei returns: t, U, I """ data = cassy.CassyDaten(file) t = data.messung(1).datenreihe("t").werte I = data.messung(1).datenreihe("I_A2").werte U = data.messung(1).datenreihe("U_B2").werte return t, U, I
def c_open(file): """ Zum Einlesen der CASSY-Messungen Parameter: file - Messdatei returns: t, U1, U2 """ data = cassy.CassyDaten(file) t = data.messung(1).datenreihe("t").werte U1 = data.messung(1).datenreihe("U_A1").werte U2 = -data.messung(1).datenreihe("U_B1").werte return t, U1, U2
def c_open(file, N_Messung): """ Zum Einlesen der CASSY-Messungen Parameter: file - Messdatei returns: t, U, I """ data = cassy.CassyDaten(file) s = [] Dt_A1 = [] R = [] for i in range(N_Messung): s.append(data.messung(i + 1).datenreihe("s").werte) Dt_A1.append(data.messung(i + 1).datenreihe("&Dt_A1").werte) R.append(data.messung(i + 1).datenreihe("R_B1").werte) return np.array(s), np.array(Dt_A1), np.array(R)
def fft_analysis(groesse, hoehe, nummer): #Daten mit Korrektur dataname = groesse + '_' + hoehe + '_' + nummer data = cassy.CassyDaten('daten/' + dataname + '.lab') time = data.messung(1).datenreihe('t').werte pres = data.messung(1).datenreihe('p_A1').werte #Signale abschneiden time, pres = analyse.untermenge_daten(time, pres, 0, tgrenz[dataname]) fourier = analyse.fourier_fft(time, pres) freq = fourier[0] amp = fourier[1] peak = analyse.peakfinder_schwerpunkt(freq[3:100], amp[3:100]) delta = korrektur(time, pres) return (2 * np.pi * peak, delta)
# -*- coding: utf-8 -*- """ Created on Sat Dec 22 19:57:55 2018 @author: Anwender """ import Temperatur import matplotlib.pyplot as plt import numpy as np import praktikum.cassy as cassy import praktikum.analyse as analyse #Daten einlesen data = cassy.CassyDaten("Kalibrierung_Wegaufnehmer.lab") n = np.array(data.messung(1).datenreihe("n").werte) #Nummer des Messpunktes, wobei n=1 der weiteste Abstand war R = np.array(data.messung(1).datenreihe("R_B1").werte) #Widerstand in kOhm #n->L L=(5*len(n)-5*(n)) #in cm #es wurde in 5cm-Schritten gemessen #TODO: np.arange(0.5,30.5,5) #So ist L=0 bei der Messung, die am nächsten an der Quelle war und L wird bei größerem Abstand von der Quelle größer L_err=np.ones(len(L))*0.1/2 #cm R_err=np.ones(len(R))*0.005/np.sqrt(12) #kOhm L_esys=0.03+0.02*1 #cm #Güteklasse II:a+b*L mit a=0.3mm, b=0.2mm/m, L= auf ganzen Meter gerundete zu messende Länge #=const. #lineare Regression k,k_err,L0,L0_err,chiq,corr=analyse.lineare_regression_xy(R,L,R_err,L_err) chiq,k,k_err=Temperatur.round_good(chiq,k,k_err) x,L0,L0_err=Temperatur.round_good(0,L0,L0_err)
import numpy as np from pylab import * close('all') def calc_mean_distance(ind,v): dis = 0 i = 0 while i < len(ind)-1: dis = dis + v[ind[i+1]]-v[ind[i]] i = i+1 dis = dis/(len(ind)-1) return dis data = cassy.CassyDaten('Schwebung_1_250n.lab') U1 = data.messung(1).datenreihe('U_B1').werte t = data.messung(1).datenreihe('t').werte ind_max = find_peaks_cwt(U1,np.arange(1,20)) ind_max = ind_max[:20] ind_max = ind_max[3:] w_array,A = analyse.fourier_fft(t,U1) ind_w1=analyse.peak(w_array,A,np.argmax(w_array>950),np.argmax(w_array>1020)) ind_w2=analyse.peak(w_array,A,np.argmax(w_array>1100),np.argmax(w_array>1160)) plot(w_array,A/max(A)) plt.axvline(x=w_array[int(ind_w1)], color="darkred", linestyle = "--") plt.text(w_array[int(ind_w1)],0.7,'max_1:{} Hz'.format(np.round(w_array[int(ind_w1)],4))) plt.axvline(x=w_array[int(ind_w2)], color="darkred", linestyle = "--")
Spyder Editor This is a temporary script file. """ from praktikum import analyse from praktikum import cassy import numpy as np import matplotlib.pyplot as plt #gemessene Laengen rp = 0.5*0.07995 lp = 0.615+0.02535+rp #Daten laden data_s = cassy.CassyDaten('daten1.lab') data_p = cassy.CassyDaten('daten2.lab') timeVal = data_s.messung(1).datenreihe('t').werte voltage_s = data_s.messung(1).datenreihe('U_A1').werte voltage_p = data_p.messung(1).datenreihe('U_A1').werte #Bestimmte Zeitpunkte der Maxima in s n = np.arange(0,200,10) n[0] = 1 period_p = [0.48, 15.38, 31.94, 48.48, 65.04, 81.56, 98.11, 114.68, 131.28, 147.84, 164.36, 180.9, 197.46, 214.02, 230.56, 247.12, 263.68, 280.22, 296.8, 313.34] period_s = [1.5, 16.44, 33.01, 49.59, 66.14, 82.73, 99.32, 115.86, 132.46, 149.05, 165.64, 182.18, 198.8, 215.34, 231.92, 248.47, 265.08, 281.62, 298.23, 314.83]
ax1.set_ylabel('$U_1$ / V') ax1.grid() ax2.plot(1000*time, vol2) ax2.set_ylabel('$U_2$ / V') ax2.set_xlabel('$t$ / ms') ax2.set_xlim(0,10) ax2.grid() plt.subplots_adjust(hspace=0) plt.savefig('plots/fundamental_roh.pdf', format='pdf', dpi=1200) plt.show() ''' # Frequenzspektrum data1 = cassy.CassyDaten('daten/fundamental_3.lab') time1 = data1.messung(1).datenreihe('t').werte vol1_1 = data1.messung(1).datenreihe('U_A1').werte vol1_2 = data1.messung(1).datenreihe('U_A2').werte fre1_1, amp1_1 = analyse.fourier_fft(time1, vol1_1) fre1_2, amp1_2 = analyse.fourier_fft(time1, vol1_2) data2 = cassy.CassyDaten('daten/fundamental_2.lab') time2 = data2.messung(1).datenreihe('t').werte vol2_1 = data2.messung(1).datenreihe('U_A1').werte vol2_2 = data2.messung(1).datenreihe('U_A2').werte fre2_1, amp2_1 = analyse.fourier_fft(time2, vol2_1) fre2_2, amp2_2 = analyse.fourier_fft(time2, vol2_2) peak1_1 = analyse.peakfinder_schwerpunkt(fre1_1[5:600], amp1_1[5:600]) peak1_2 = analyse.peakfinder_schwerpunkt(fre1_2[5:600], amp1_2[5:600])
def round_good(m,s,err): ''' Passt Mittelwert- und Standardabweichungsnachkommastellen an den Fehler an (2 signifikante Stellen des Fehlers) m=mean s=std err=std/sqrt(len) ''' i=2 test=list('{:.20f}'.format(err)) while test[i]=='0': i+=1 return np.round([m,s,err],i) #Daten einlesen data = cassy.CassyDaten('gegen.koppl.eisen.lab') U1 = data.messung(1).datenreihe('U_B1').werte U2 = data.messung(1).datenreihe('U_B2').werte t = data.messung(1).datenreihe('t').werte #Rohdatenplot subplot(2,1,1) plot(t,U1) ylabel('$U$ / V') xlabel('t/s') xlim(0,0.04) title('erster Schwingkreis') grid() subplot(2,1,2) plot(t,U2)
plt.show() ''' fplus = np.array([]) fminus = np.array([]) dic_file = {1:'ohne2', 2:'ohne3', 3:'eisen2'} dic_fre = {1: np.array([57,67,70,78]), 2:np.array([64,68,68,72]), 3:np.array([20,29,40,49])} freqs = np.array([]) amps = np.array([]) for i in range(1,4,1): data = cassy.CassyDaten('daten/schwebung_' + dic_file[i] + '_1.lab') time = data.messung(1).datenreihe('t').werte vol = data.messung(1).datenreihe('U_A1').werte vol2 = data.messung(1).datenreihe('U_A2').werte freq, amp = analyse.fourier_fft(time, vol) freq2, amp2 = analyse.fourier_fft(time, vol2) (freq, amp) = analyse.untermenge_daten(freq, amp, 0, 50000) (freq2, amp2) = analyse.untermenge_daten(freq2, amp2, 0, 50000) peak1 = analyse.peakfinder_schwerpunkt(freq[dic_fre[i][0]:dic_fre[i][1]], amp[dic_fre[i][0]:dic_fre[i][1]]) peak2 = analyse.peakfinder_schwerpunkt(freq[dic_fre[i][2]:dic_fre[i][3]], amp[dic_fre[i][2]:dic_fre[i][3]]) ymax1 = amp[dic_fre[i][0]:dic_fre[i][1]].argmax() ymax2 = amp[dic_fre[i][2]:dic_fre[i][3]].argmax() fplus = np.concatenate((fplus, np.array([peak1, np.abs(peak1-freq[dic_fre[i][0]+ymax1])]))) fminus = np.concatenate((fminus, np.array([peak2, np.abs(peak2-freq[dic_fre[i][2]+ymax2])])))
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Mon Sep 16 21:19:03 2019 @author: simon """ from praktikum import analyse from praktikum import cassy import numpy as np import matplotlib.pyplot as plt data = cassy.CassyDaten('daten/mittel_20_3.lab') timeVal = data.messung(1).datenreihe('t').werte pres = data.messung(1).datenreihe('p_A1').werte f, (ax1, ax2) = plt.subplots(2, 1) ax1.plot(timeVal, pres, color='red') freq, amp = analyse.fourier_fft(timeVal, pres) ax2.plot(freq[0:8000], amp[0:8000], color='red') ax1.set_ylabel("Druckdifferenz / hPa") ax2.set_ylabel("Amplitude") ax2.set_xlabel("$f$ / Hz") ax1.set_xlabel("$t$ / $s$") ax1.set_xlim(0, 8) ax2.set_xlim(0, 5) plt.rcParams["figure.figsize"] = (12, 6) plt.rcParams['axes.titlesize'] = 'large' plt.rcParams['axes.labelsize'] = 'large' f.tight_layout() plt.savefig('plots/rohdaten.pdf')
close('all') def calc_mean_distance(ind, v): dis = 0 i = 0 while i < len(ind) - 1: dis = dis + v[ind[i + 1]] - v[ind[i]] i = i + 1 dis = dis / (len(ind) - 1) return dis data = cassy.CassyDaten('Gleichsinnig/gleich.koppl.eisen.lab') U1 = data.messung(1).datenreihe('U_B1').werte U2 = data.messung(1).datenreihe('U_B2').werte t = data.messung(1).datenreihe('t').werte w1, A1 = analyse.fourier_fft(t, U1) w1 = analyse.peakfinder_schwerpunkt(w1, A1) print("Frequenz 1 aus fft: ", w1) w2, A2 = analyse.fourier_fft(t, U2) w2 = analyse.peakfinder_schwerpunkt(w2, A2) print("Frequenz 2 aus fft: ", w2) w_mean = (w1 + w2) / 2 w_std = np.sqrt((w1 - w_mean)**2 + (w2 - w_mean)**2) print("mittlere Frequenz aus fft", w_mean, "+-", w_std)
import praktikum.cassy as cassy import Rauschmessung offsetM = Rauschmessung.mM offsetSt = Rauschmessung.mSt l = 0.68 r = 0.08035 / 2 errl_stat = 0.001 errr_stat = 0.0001 errl_sys = 0.0003 + 0.0002 * 1 # Güteklasse II:a+b*L mit a=0.3mm, b=0.2mm/m, L= auf ganzen Meter gerundete zu messende Länge T = [] errT = [] for i in range(1, 4): data = cassy.CassyDaten("Erdbeschleunigung/perfekte_anpassung_messung_" + str(i) + ".lab") t = data.messung(1).datenreihe("t").werte M = data.messung(1).datenreihe( "U_A1").werte - offsetM #Pendelkörper (Masse) St = data.messung(1).datenreihe("U_B1").werte - offsetSt #Stange allein if __name__ == '__main__': #Rohdatenplot bis Stange zu gedämpft von = 0 bis = -1 #np.argmax(t>=100) plt.plot(t[von:bis], M[von:bis], color='black') plt.plot(t[von:bis], St[von:bis], color='red') plt.title('Schwingung mit körperloser Frequenz {}'.format(i)) plt.grid() plt.savefig('Images/Erdbeschleunigung_Roh_' + str(i) + '.jpg')
''' Passt Mittelwert- und Standardabweichungsnachkommastellen an den Fehler an (2 signifikante Stellen des Fehlers) m=mean s=std err=std/sqrt(len) ''' i=2 test=list('{:.20f}'.format(err)) while test[i]=='0': #TODO: wie groß sind die Fehler auf L? Kommastelle finden oder nicht? i+=1 return np.round([m,s,err],i) plt.close('all') t, p, T = [], [], [] #Temperatur in °C, Druck in hPa! data = cassy.CassyDaten("Rauschmessung.lab") t = data.messung(1).datenreihe("t").werte T = data.messung(1).datenreihe("&J_A11").werte p = data.messung(1).datenreihe("p_B1").werte print("Temperaturverteilung") print("m=" + str(np.round(np.average(T),1))+" °C , s="+str(np.round(np.std(T),2))+" °C , err="+str(round_up(np.std(T)/np.sqrt(len(T)),1))+" °C") plt.hist(T,7, normed=True) x=np.arange(np.average(T)-0.25, np.average(T)+0.25, 0.001) plt.plot(x, gauss(x, np.average(T), np.std(T))) plt.title(u"Rauschmessung bei Raumtemperatur\n $\sigma$=" + str(np.round(np.std(T),2))+"$^{\circ}C$, $\mu$="+str(np.round(np.average(T),1))+ "$^{\circ}C$, $\sigma_{\mu} = $"+str(round_up(np.std(T)/np.sqrt(len(T)),1))+"$^{\circ}C$") plt.xlabel(u"T/°C") plt.ylabel('Relatives Vorkommen') plt.savefig("Images/RauschmessungRT_T_histo.jpg") plt.figure()
''' Passt Mittelwert- und Standardabweichungsnachkommastellen an den Fehler an (2 signifikante Stellen des Fehlers) m=mean s=std err=std/sqrt(len) ''' i = 2 test = list('{:.20f}'.format(err)) while test[i] == '0': i += 1 return np.round([m, s, err], i) plt.close('all') data = cassy.CassyDaten("gekoppelt/Rauschmessung.lab") t = data.messung(1).datenreihe("t").werte M = data.messung(1).datenreihe("U_A1").werte #Pendelkörper (Masse) St = data.messung(1).datenreihe("U_B1").werte #Stange allein #----------------------------# #Auswertung der Rauschmessung# #----------------------------# #Mittelwerte, Standardabweichungen und Fehler mM, sM, errM = round_good(np.average(M), np.std(M), np.std(M) / np.sqrt(len(M))) mSt, sSt, errSt = round_good(np.average(St), np.std(St), np.std(St) / np.sqrt(len(St))) if __name__ == "__main__":
U_array = [] I_array = [] U_err_array = [] I_err_array = [] U_sigma = [] I_sigma = [] U_B = 20 I_B = 0.6 sigmaU = U_B / 4096. / np.sqrt(12.) sigmaI = I_B / 4096. / np.sqrt(12.) for i in range(1, 6): #Daten Einlesen t, U, I = [], [], [] #Zeit, Spannung, Strom data = cassy.CassyDaten("Widerstand_2.lab") t = data.messung(i).datenreihe("t").werte U = data.messung(i).datenreihe("U_B1").werte I = data.messung(i).datenreihe("I_A1").werte #Mittelwert, Standardabweichung, Fehler auf den Mittelwert mU, sU, errU = round_good(np.mean(U), np.std(U), np.std(U) / np.sqrt(len(U))) mI, sI, errI = round_good(np.mean(I), np.std(I), np.std(I) / np.sqrt(len(I))) if __name__ == '__main__': print('U-werte') print('m=' + str(mU) + u' V, std=' + str(sU) + u' V, err=' + str(errU) + u' V') print('I-werte')
# -*- coding: utf-8 -*- from praktikum import analyse from praktikum import cassy import numpy as np import matplotlib.pyplot as plt # Daten laden data = cassy.CassyDaten('daten/schwebung_1.lab') timeVal = data.messung(1).datenreihe('t').werte voltage = data.messung(1).datenreihe('U_A1').werte ''' t = [0, 8] plt.plot(timeVal, voltage) plt.xlim(t[0], t[1]) #plt.ylim(-0.3,0.3) plt.xticks(np.arange(t[0], t[1], 0.02)) #plt.xticks(np.arange(t[0],t[1], 2*0.0069)) plt.grid() plt.tight_layout() plt.show() ''' ''' # Rohdaten visualisieren
#!/usr/bin/env python3 # -*- coding: utf-8 -*- from praktikum import analyse from praktikum import cassy import numpy as np import matplotlib.pyplot as plt # Daten laden data1 = cassy.CassyDaten('daten/spektrum_1.2.lab') time1 = data1.messung(1).datenreihe('t').werte volt1 = data1.messung(1).datenreihe('U_A1').werte data2 = cassy.CassyDaten('daten/spektrum_2.lab') time2 = data2.messung(1).datenreihe('t').werte volt2 = data2.messung(1).datenreihe('U_A1').werte data3 = cassy.CassyDaten('daten/spektrum_3.1.lab') time3 = data3.messung(1).datenreihe('t').werte volt3 = data3.messung(1).datenreihe('U_A1').werte # Fourier fourier1 = analyse.fourier_fft(time1, volt1) fourier2 = analyse.fourier_fft(time2, volt2) fourier3 = analyse.fourier_fft(time3, volt3) fre1 = fourier1[0] amp1 = fourier1[1] fre2 = fourier2[0] amp2 = fourier2[1] fre3 = fourier3[0]
return np.round([m, s, err], i - komma + 1) plt.close('all') dateien = ['messung_vorher', '_mitte', '_ende'] names = ['vor den Messungen', 'in der Mitte', 'nach den Messungen'] dnames = ['vor_den_Messungen', 'in_der_Mitte', 'nach_den_Messungen'] ts = [] Ts = [] T_errs = [] dig = 0.1 / np.sqrt(12) for i, n in enumerate(dateien): data = cassy.CassyDaten("Temperatur" + n + ".lab") t = data.messung(1).datenreihe("t").werte T = data.messung(1).datenreihe("&J_A11").werte #Mittelwerte, Standardabweichungen und Fehler mT, sT, errT = round_good(np.average(T), np.std(T), np.std(T) / np.sqrt(len(T))) if __name__ == "__main__": print("Temperatur " + names[i]) print('m=' + str(mT) + u' °C, std=' + str(sT) + u' °C, err=' + str(errT) + u' °C') #Histogramm weightsT = np.ones_like(T) / float(len(T)) plt.hist(T, 7, normed=0, weights=weightsT)
import numpy as np import scipy from praktikum import analyse as anal import praktikum.cassy as cassy #Fehler Beachten+Daraufaddieren!!!!! R=8.314 N=10000 #Anzahl der Elemente die zur Berechnung von L betrachtet werden = max. obere Temperatur #Kalibrierungsdaten #Aus dem Resultat von Kalib.py def T_real(T_gemessen): return 0.9727951049804687*(T_gemessen-50) + 1.126251220703125 + 50 t, p, T = [], [], [] #Temperatur in °C!!! data = cassy.CassyDaten("Dampfdruckkurve.lab") t = data.messung(1).datenreihe("t").werte T = data.messung(1).datenreihe("&J_A11").werte p = data.messung(1).datenreihe("p_B1").werte #Mitbetrachtung der Kalibrierung: T = T_real(T) T = T+273.15 #Plots plt.plot(t, T-273.15) plt.title("Abkühlung des Kolbens") plt.ylabel("Temperatur in K") plt.xlabel("Zeit in s") plt.show()
@author: Mate """ import matplotlib.pyplot as plt import numpy as np import scipy import praktikum.cassy as cassy import praktikum.analyse as anal def gauss(x, m, s): return (np.power(scipy.pi * 2 * s**2, -0.5) * np.exp(-(x - m)**2 / (2 * s**2))) t, p, T = [], [], [] #Temperatur in °C!!! data = cassy.CassyDaten("Kalibrierung 1 + Dichtigkeit.lab") t = data.messung(1).datenreihe("t").werte T = data.messung(1).datenreihe("&J_A11").werte p = data.messung(1).datenreihe("p_B1").werte #Fehler ausrechnen!! sigmat = 1.0 sigmaT = 1.0 sigmap = 1.0 ####Temperaturkalibrierung: #T=0°C N_Tslice = 2000 t_sliced = t[N_Tslice:] T = T[N_Tslice:] print("Temperaturkalibrierung")
#! /usr/bin/env python from __future__ import print_function from praktikum import cassy from praktikum import analyse import numpy as np from pylab import * data = cassy.CassyDaten('lab/Pendel.lab') timeValues = data.messung(1).datenreihe('t').werte voltage = data.messung(1).datenreihe('U_A1').werte voltageError = 0. * voltage + 0.01 offset = analyse.gewichtetes_mittel(voltage, voltageError)[0] voltage = voltage - offset figure(1) title('Pendel') subplot(2, 1, 1) plot(timeValues, voltage) grid() xlabel('Zeit / s') ylabel('Spannung / V') einhuellende = analyse.exp_einhuellende(timeValues, voltage, voltageError) plot(timeValues, +einhuellende[0] * exp(-einhuellende[2] * timeValues)) plot(timeValues, -einhuellende[0] * exp(-einhuellende[2] * timeValues)) subplot(2, 1, 2) fourier = analyse.fourier_fft(timeValues, voltage) frequency = fourier[0] amplitude = fourier[1]
''' Passt Mittelwert- und Standardabweichungsnachkommastellen an den Fehler an (2 signifikante Stellen des Fehlers) m=mean s=std err=std/sqrt(len) ''' i = 2 test = list('{:.20f}'.format(err)) while test[i] == '0': i += 1 return np.round([m, s, err], i) plt.close('all') data = cassy.CassyDaten("Erdbeschleunigung/Rauschmessung_umgepolt.lab") t = data.messung(1).datenreihe("t").werte M = data.messung(1).datenreihe("U_A1").werte #Pendelkörper (Masse) St = data.messung(1).datenreihe("U_B1").werte #Stange allein #----------------------------# #Auswertung der Rauschmessung# #----------------------------# #Mittelwerte, Standardabweichungen und Fehler mM, sM, errM = round_good(np.average(M), np.std(M), np.std(M) / np.sqrt(len(M))) mSt, sSt, errSt = round_good(np.average(St), np.std(St), np.std(St) / np.sqrt(len(St))) if __name__ == "__main__":
#! /usr/bin/env python from __future__ import print_function from praktikum import cassy from praktikum import analyse import numpy as np import scipy.constants from pylab import * # Rauschmessung data1 = cassy.CassyDaten('lab/Thermo_Rauschmessung.lab') # CASSY-Datei hat Druckwerte in der 2. Spalte, Temperatur in der 3. Spalte p = data1.messung(1).datenreihe('p_A1').werte T = data1.messung(1).datenreihe('T_B11').werte figure() subplot(2, 1, 1) title('Histogramm der Druckwerte') hist(p, bins=100, range=(1000., 1020.), color='green') xlabel('p / mbar') xlim(1000., 1020.) p_mean = np.mean(p) p_stdabw = np.std(p, ddof=1) p_err = p_stdabw / np.sqrt(len(p)) print('p_mean = %f, p_stdabw = %f, p_err = %f' % (p_mean, p_stdabw, p_err)) subplot(2, 1, 2) title('Histogramm der Temperaturwerte')
# -*- coding: utf-8 -*- """ Created on Sat Sep 21 13:39:02 2019 @author: Marius """ from praktikum import analyse from praktikum import cassy import numpy as np import matplotlib.pyplot as plt data_s = cassy.CassyDaten('daten/schwingung_10Ohm_1.lab') data_k = cassy.CassyDaten('daten/schwingung_1000Ohm_1.lab') data_k2 = cassy.CassyDaten('daten/schwingung_3000Ohm_1.lab') data_a = cassy.CassyDaten('daten/aperiodisch_3_186.lab') time = data_s.messung(1).datenreihe('t').werte # Zeit in ms time = time * 1000 volt_s = data_s.messung(1).datenreihe('U_B1').werte volt_k = data_k.messung(1).datenreihe('U_B1').werte volt_k2 = data_k2.messung(1).datenreihe('U_B1').werte volt_a = data_a.messung(1).datenreihe('U_B1').werte plt.figure(figsize=(12, 6)) ''' plt.plot(time, volt_s, color='blue', label='Schwingung') plt.plot(time, volt_k, color='green', label='Kriechfall') plt.plot(time, volt_a, color='red', label='Aperiodischer Grenzfall') plt.xlim(0,5)
i = 2 test = list('{:.20f}'.format(err)) while test[i] == '0': i += 1 return np.round([m, s, err], i) freq_array = [] errfreq_array = [] Gegen = ['gegen', 20, 3000] Gleich = ['gleich', 30, 4500] for n in (Gegen, Gleich): #Daten einlesen data = cassy.CassyDaten(n[0] + '.koppl.eisen.lab') U1 = data.messung(1).datenreihe('U_B1').werte U2 = data.messung(1).datenreihe('U_B2').werte t = data.messung(1).datenreihe('t').werte ''' An dieser Stelle müsste eine Offsetkorrektur stehen, welche aber zumindest im gegensinnigen Fall auf Grund fehlender Daten keinen Sinn ergibt. Außerdem ändert sich das Ergebnis nur marginal [für eine Frequenzbestimmung ist eine Konstante ja egal], hier trotzdem mal ein Vorschlag: figure() subplot(2,1,1) hist(U1[1000:]) title("Offset-Korrektur U1 "+n[3]) off_set1 = np.mean(U1[1000:]) print(off_set1)
2: 'daten/schwingung_5.1Ohm_', 3: 'daten/schwingung_10Ohm_', 4: 'daten/schwingung_20Ohm_', 5: 'daten/schwingung_47Ohm_', 6: 'daten/schwingung_100Ohm_' } reg1 = np.array([]) reg2 = np.array([]) reg2plus = np.array([]) reg2minus = np.array([]) #Frequenzen und Dämpfungen bestimmen (Regression) for i in range(1, 6, 1): n = np.arange(1, 1 + dic1[i].size, 1) data = cassy.CassyDaten(dic2[i]) time = data.messung(1).datenreihe('t').werte vol = data.messung(1).datenreihe('U_B1').werte x = time[dic1[i]] ex = np.full((dic1[i].size, ), 1e-05 / np.sqrt(12)) y = np.log(np.abs(vol[dic1[i]]) - dic3[i]) ey = 4.8e-03 * 1 / (np.abs(vol[dic1[i]]) - dic3[i]) ey_sys = 0.01 * np.sqrt(vol[dic1[i]]**2 + dic3[i]**2) / (np.abs(vol[dic1[i]]) - dic3[i]) res1 = analyse.lineare_regression(n, x, ex) res2 = analyse.lineare_regression_xy(x, y, ex, ey) res2plus = analyse.lineare_regression_xy(x, y + ey_sys, ex, ey) res2minus = analyse.lineare_regression_xy(x, y - ey_sys, ex, ey) reg1 = np.concatenate((reg1, res1)) reg2 = np.concatenate((reg2, res2)) reg2plus = np.concatenate((reg2plus, res2plus))
#! /usr/bin/env python # -*- coding: utf-8 -*- from __future__ import print_function from builtins import range from praktikum import analyse from praktikum import cassy import numpy as np import os from pylab import * inputfile = 'labx/kondensator.labx' #inputfile = 'txt/kondensator.txt' data = cassy.CassyDaten(inputfile) data.info() # Bereich für logarithmischen Fit (in ms) tmin = 0.101 tmax = 4.001 # Beginn der "Rauschmessung" für die Offset-Korrektur (in ms) toffset = 8.0 figure(1, figsize=(25, 10)) N = data.anzahl_messungen() for m in range(1, N + 1): t = data.messung(m).datenreihe('t').werte data.messung(m).datenreihe('t').info()
errks = [] T = [0, 0, 0], [0, 0, 0], [0, 0], [0] for i in range(1, 5): #Läuft durch Positionen (pos_i) #if i<3: # plt.close('all') #Anzahl der Dateien path, dirs, files = next(os.walk("gekoppelt/pos_" + str(i))) file_count = len(files) t = np.empty((file_count, bis)) U1 = np.empty((file_count, bis)) U2 = np.empty((file_count, bis)) #Daten einlesen data = cassy.CassyDaten("gekoppelt/pos_" + str(i) + "/schweb_pos_" + str(i) + ".lab") t1 = data.messung(1).datenreihe("t").werte t[0] = t1[:bis] U1_1 = data.messung(1).datenreihe("U_A1").werte - ( offset1 + (i - 1) * 0.05) #scheinbar systematischer Offset U1[0] = U1_1[:bis] U1_2 = data.messung(1).datenreihe("U_B1").werte - offset2 #Pendel2 U2[0] = U1_2[:bis] if file_count > 1: #Für 2 Messungen im Ordner einer bestimmten Position data = cassy.CassyDaten("gekoppelt/pos_" + str(i) + "/gleich_pos_" + str(i) + ".lab") t2 = data.messung(1).datenreihe("t").werte U2_1 = data.messung(1).datenreihe("U_A1").werte #Pendel1 U2_1 = U2_1 - np.mean(U2_1) U1[1] = U2_1[:bis]