This commit is contained in:
xaver 2020-08-06 17:23:19 +02:00
parent 183c95cb8b
commit 7174b03963
2 changed files with 73 additions and 11 deletions

View File

@ -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

View File

@ -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,8 +88,10 @@ 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.95) 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)
dbspec = 10.0*np.log10(spec) # in dB dbspec = 10.0*np.log10(spec) # in dB
power = dbspec[:, 50] power = dbspec[:, 50]