Upload files to 'elitebook-8540w'
meritev odziva zvocne kartice prenosnika EliteBook 8540w, uporabljena sai skripta. 2048 tock in 128 povprecenjmaster
parent
a605f819a6
commit
da7341ee18
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,45 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
print('*** Preprost zvočni spektralni analizator - S53MV 28.09.2020 ***')
|
||||||
|
fs=192000 #Frekvenca vzročenja zvočnega signala (max 192000Hz)
|
||||||
|
pts=2048 #Število točk spektra 0...fs/2 (potenca 2 za učinkovit FFT)
|
||||||
|
avg=128 #Število povprečenj spektra
|
||||||
|
|
||||||
|
import sounddevice as sd #Poiskati na spletu in naložiti s pip3!
|
||||||
|
import numpy as np #Uporaba učinkovitih funkcij numpy
|
||||||
|
import matplotlib.pyplot as plt #Risanje rezultata z matplotlib
|
||||||
|
sd.default.device = 0
|
||||||
|
fskala=np.linspace(0,fs/2,2*pts+1)[:-1] #Izračunaj frekvenčno skalo [Hz]
|
||||||
|
|
||||||
|
def spekter(fs,pts,avg,fskala): #Zajem signala z zvočno kartico in povprečenje spektra [dB]
|
||||||
|
s=sd.rec(pts*(1+avg),samplerate=fs,channels=1) #Vzorčenje ADC zvočne kartice, 2D polje!
|
||||||
|
sd.wait() #Počakaj do konca vzorčenja
|
||||||
|
nz=1.e-12 #Dodatek za neničelni argument logaritma
|
||||||
|
s2=np.square(s) #Izpis jakosti/max [dB]
|
||||||
|
print('Jakost:',"%.1f"%(10*np.log10(nz+np.mean(s2))),'dB Vrh:',"%.1f"%(10*np.log10(nz+np.amax(s2))),'dB',end=' ')
|
||||||
|
o=1+np.cos(np.linspace(-np.pi,np.pi,2*pts)) #Okno dvignjeni kosinus
|
||||||
|
k=0
|
||||||
|
s2=np.zeros(2*pts)
|
||||||
|
while k<pts*avg: #Seštevanje moči FFT
|
||||||
|
s2=s2+np.square(np.abs(np.fft.rfft(o*s.reshape(-1)[k:k+2*pts],n=4*pts)[:-1]))
|
||||||
|
k+=pts
|
||||||
|
s=10*np.log10(nz+0.5*s2/pts/pts/avg) #Povprečje [dB]
|
||||||
|
print(' Max:',"%.1f"%(np.amax(s)),'dB @',"%.1f"%(fskala[np.argmax(s)]),'Hz')
|
||||||
|
return s
|
||||||
|
|
||||||
|
meritev = spekter(fs,pts,avg,fskala)
|
||||||
|
print(meritev)
|
||||||
|
print(fskala)
|
||||||
|
data = np.column_stack((fskala, meritev))
|
||||||
|
np.savetxt('5mhz-polinom-2048tock.csv', data, delimiter=',')
|
||||||
|
#wfbp=None
|
||||||
|
#while wfbp!=True: #Prvo risanje spektra z normalizacijo, ponovi s klikom miške
|
||||||
|
# fig,ax=plt.subplots()
|
||||||
|
# line,=ax.plot(fskala,spekter(fs,pts,avg,fskala))
|
||||||
|
# wfbp=plt.waitforbuttonpress(0.01)
|
||||||
|
# while wfbp==None: #Zanka risanja spektra, izhod=pritisk tipke ali miške
|
||||||
|
# line.set_ydata(spekter(fs,pts,avg,fskala))
|
||||||
|
# fig.canvas.draw()
|
||||||
|
# wfbp=plt.waitforbuttonpress(0.01)
|
||||||
|
# plt.close()
|
||||||
|
#print('*** Konec ***') #pritisk tipke na tipkovnici
|
|
@ -0,0 +1,45 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
print('*** Preprost zvočni spektralni analizator - S53MV 28.09.2020 ***')
|
||||||
|
fs=192000 #Frekvenca vzročenja zvočnega signala (max 192000Hz)
|
||||||
|
pts=2048 #Število točk spektra 0...fs/2 (potenca 2 za učinkovit FFT)
|
||||||
|
avg=128 #Število povprečenj spektra
|
||||||
|
|
||||||
|
import sounddevice as sd #Poiskati na spletu in naložiti s pip3!
|
||||||
|
import numpy as np #Uporaba učinkovitih funkcij numpy
|
||||||
|
import matplotlib.pyplot as plt #Risanje rezultata z matplotlib
|
||||||
|
sd.default.device = 0
|
||||||
|
fskala=np.linspace(0,fs/2,2*pts+1)[:-1] #Izračunaj frekvenčno skalo [Hz]
|
||||||
|
|
||||||
|
def spekter(fs,pts,avg,fskala): #Zajem signala z zvočno kartico in povprečenje spektra [dB]
|
||||||
|
s=sd.rec(pts*(1+avg),samplerate=fs,channels=1) #Vzorčenje ADC zvočne kartice, 2D polje!
|
||||||
|
sd.wait() #Počakaj do konca vzorčenja
|
||||||
|
nz=1.e-12 #Dodatek za neničelni argument logaritma
|
||||||
|
s2=np.square(s) #Izpis jakosti/max [dB]
|
||||||
|
print('Jakost:',"%.1f"%(10*np.log10(nz+np.mean(s2))),'dB Vrh:',"%.1f"%(10*np.log10(nz+np.amax(s2))),'dB',end=' ')
|
||||||
|
o=1+np.cos(np.linspace(-np.pi,np.pi,2*pts)) #Okno dvignjeni kosinus
|
||||||
|
k=0
|
||||||
|
s2=np.zeros(2*pts)
|
||||||
|
while k<pts*avg: #Seštevanje moči FFT
|
||||||
|
s2=s2+np.square(np.abs(np.fft.rfft(o*s.reshape(-1)[k:k+2*pts],n=4*pts)[:-1]))
|
||||||
|
k+=pts
|
||||||
|
s=10*np.log10(nz+0.5*s2/pts/pts/avg) #Povprečje [dB]
|
||||||
|
print(' Max:',"%.1f"%(np.amax(s)),'dB @',"%.1f"%(fskala[np.argmax(s)]),'Hz')
|
||||||
|
return s
|
||||||
|
|
||||||
|
meritev = spekter(fs,pts,avg,fskala)
|
||||||
|
#print(meritev)
|
||||||
|
#print(fskala)
|
||||||
|
#data = np.column_stack((fskala, meritev))
|
||||||
|
#np.savetxt('10mhz-polinom-2048tock.csv', data, delimiter=',')
|
||||||
|
wfbp=None
|
||||||
|
while wfbp!=True: #Prvo risanje spektra z normalizacijo, ponovi s klikom miške
|
||||||
|
fig,ax=plt.subplots()
|
||||||
|
line,=ax.plot(fskala,spekter(fs,pts,avg,fskala))
|
||||||
|
wfbp=plt.waitforbuttonpress(0.01)
|
||||||
|
while wfbp==None: #Zanka risanja spektra, izhod=pritisk tipke ali miške
|
||||||
|
line.set_ydata(spekter(fs,pts,avg,fskala))
|
||||||
|
fig.canvas.draw()
|
||||||
|
wfbp=plt.waitforbuttonpress(0.01)
|
||||||
|
plt.close()
|
||||||
|
print('*** Konec ***') #pritisk tipke na tipkovnici
|
Loading…
Reference in New Issue