06.08
This commit is contained in:
		
							parent
							
								
									183c95cb8b
								
							
						
					
					
						commit
						7174b03963
					
				| @ -1,28 +1,83 @@ | |||||||
| from scipy import signal | from scipy import signal | ||||||
| import matplotlib.pyplot as plt | import matplotlib.pyplot as plt | ||||||
| import numpy as np | import numpy as np | ||||||
|  | import pylab | ||||||
| from IPython import embed | from IPython import embed | ||||||
| from scipy.optimize import curve_fit | from scipy.optimize import curve_fit | ||||||
| from jar_functions import sin_response | from jar_functions import sin_response | ||||||
| 
 | 
 | ||||||
| data = np.load('files.npy') | def take_second(elem): | ||||||
| for d in data: |     return elem[1] | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | gain = [] | ||||||
|  | mgain = [] | ||||||
|  | phaseshift = [] | ||||||
|  | mphaseshift = [] | ||||||
|  | amfreq = [] | ||||||
|  | amf = [0.001, 0.002, 0.005, 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1] | ||||||
|  | 
 | ||||||
|  | currf = None | ||||||
|  | idxlist = [] | ||||||
|  | 
 | ||||||
|  | data = sorted(np.load('files.npy'), key = take_second) | ||||||
|  | 
 | ||||||
|  | for i, d in enumerate(data): | ||||||
|     dd = list(d) |     dd = list(d) | ||||||
|     jar = np.load('%s.npy' %dd) |     jar = np.load('%s.npy' %dd) | ||||||
|  |     print(dd) | ||||||
|  | 
 | ||||||
|     time = np.load('time: %s.npy' %dd) |     time = np.load('time: %s.npy' %dd) | ||||||
| 
 | 
 | ||||||
|     b, a = signal.butter(4, (float(d[1]) / 2) / 10000, 'high', analog=True) |     b, a = signal.butter(4, (float(d[1]) / 2) / 10000, 'high', analog=True) | ||||||
|     y = signal.filtfilt(b, a, jar - np.mean(jar)) |     y = signal.filtfilt(b, a, jar - np.mean(jar)) | ||||||
|     plt.plot(time, y) |     #plt.plot(time, y) | ||||||
|     #plt.plot(time, jar) |     #plt.plot(time, jar) | ||||||
| 
 | 
 | ||||||
|     sinv, sinc = curve_fit(sin_response, time, y, [float(d[1]), 2, 0.5]) |     sinv, sinc = curve_fit(sin_response, time, y, [float(d[1]), 2, 0.5]) | ||||||
|     print('frequency, phaseshift, amplitude:', sinv) |     print('frequency, phaseshift, amplitude:', sinv) | ||||||
| 
 | 
 | ||||||
|     plt.plot(time, sin_response(time, *sinv), label='fit: f=%f, p=%.2f, A=%.2f' % tuple(sinv)) |     phaseshift.append(np.sqrt(sinv[1]**2)) | ||||||
|  |     gain.append(np.sqrt(sinv[2]**2)) | ||||||
|  |     amfreq.append(d[1]) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     #plt.plot(time, sin_response(time, *sinv), label='fit: f=%f, p=%.2f, A=%.2f' % tuple(sinv)) | ||||||
| 
 | 
 | ||||||
|     # plt.legend() |     # plt.legend() | ||||||
|     plt.show() |     #plt.show() | ||||||
| embed() | 
 | ||||||
|  |     if currf is None or currf == d[1]: | ||||||
|  |         currf = d[1] | ||||||
|  |         idxlist.append(i) | ||||||
|  | 
 | ||||||
|  |     else:  # currf != f | ||||||
|  |         meanf = []  # lists to make mean of | ||||||
|  |         meanp = [] | ||||||
|  |         for x in idxlist: | ||||||
|  |             meanf.append(gain[x]) | ||||||
|  |             meanp.append(phaseshift[x]) | ||||||
|  |         meanedf = np.mean(meanf) | ||||||
|  |         meanedp = np.mean(meanp) | ||||||
|  |         mgain.append(meanedf) | ||||||
|  |         mphaseshift.append(meanedp) | ||||||
|  |         currf = d[1]    # set back for next loop | ||||||
|  |         idxlist = [i] | ||||||
|  | 
 | ||||||
|  | meanf = [] | ||||||
|  | meanp = [] | ||||||
|  | for y in idxlist: | ||||||
|  |     meanf.append(gain[y]) | ||||||
|  |     meanp.append(phaseshift[y]) | ||||||
|  | meanedf = np.mean(meanf) | ||||||
|  | meanedp = np.mean(meanp) | ||||||
|  | mgain.append(meanedf) | ||||||
|  | mphaseshift.append(meanedp) | ||||||
|  | 
 | ||||||
|  | fig = plt.figure() | ||||||
|  | ax = fig.add_subplot(1, 1, 1) | ||||||
|  | ax.plot(amf, mgain, 'o') | ||||||
|  | ax.set_yscale('log') | ||||||
|  | pylab.show() | ||||||
| 
 | 
 | ||||||
| #betrag von A | #betrag von A | ||||||
| @ -38,8 +38,13 @@ datasets = [#'2020-06-19-aa',   #-5Hz delta f, horrible fit | |||||||
|             '2020-07-21-al',      #sin |             '2020-07-21-al',      #sin | ||||||
|             '2020-07-21-am', |             '2020-07-21-am', | ||||||
|             '2020-07-21-ak', |             '2020-07-21-ak', | ||||||
|             #'2020-07-21-an', |             '2020-07-21-an', | ||||||
|             #'2020-07-21-ao' |             '2020-07-21-ao', | ||||||
|  |             '2020-07-22-ai', | ||||||
|  |             '2020-07-22-aj', | ||||||
|  |             '2020-07-22-ak', | ||||||
|  |             '2020-07-22-al', | ||||||
|  |             '2020-07-22-am', | ||||||
|             ] |             ] | ||||||
| 
 | 
 | ||||||
| time_all = [] | time_all = [] | ||||||
| @ -83,7 +88,9 @@ for idx, dataset in enumerate(datasets): | |||||||
| 
 | 
 | ||||||
|         file_name.append(str(d)) |         file_name.append(str(d)) | ||||||
|         files.append(file_name) |         files.append(file_name) | ||||||
| 
 |         if float(amfreq) < 0.01: | ||||||
|  |             spec, freqs, times = specgram(dat, Fs=1/dt, detrend='mean', NFFT=nfft, noverlap=nfft * 0.8) | ||||||
|  |         else: | ||||||
|             spec, freqs, times = specgram(dat, Fs=1 / dt, detrend='mean', NFFT=nfft, noverlap=nfft * 0.95) |             spec, freqs, times = specgram(dat, Fs=1 / dt, detrend='mean', NFFT=nfft, noverlap=nfft * 0.95) | ||||||
| 
 | 
 | ||||||
|         dbspec = 10.0*np.log10(spec)  # in dB |         dbspec = 10.0*np.log10(spec)  # in dB | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user