31 changed files with 84441 additions and 0 deletions
-
4096elitebook-8540w-280622/10mhz-polinom-2048tock.csv
-
4096elitebook-8540w-280622/5mhz-polinom-2048tock.csv
-
4091elitebook-8540w-280622/chain.csv
-
4091elitebook-8540w-280622/chain1.csv
-
81elitebook-8540w-280622/fazni-sum
-
82elitebook-8540w-280622/fazni-sum-floor
-
4091elitebook-8540w-280622/floor1.csv
-
4091elitebook-8540w-280622/floor1m-oeo.csv
-
4091elitebook-8540w-280622/floor2.csv
-
4091elitebook-8540w-280622/floor2m-kul-meritev.csv
-
4091elitebook-8540w-280622/floor2m-oeo.csv
-
4091elitebook-8540w-280622/floor3-1m-oeo.csv
-
48elitebook-8540w-280622/meritev+popravek
-
45elitebook-8540w-280622/meritev-odziva
-
45elitebook-8540w-280622/meritev-odziva-live
-
4091elitebook-8540w-280622/oeo-3.csv
-
4091elitebook-8540w-280622/oeo-vidmar-amp.csv
-
4091elitebook-8540w-280622/oeo.csv
-
17elitebook-8540w-280622/popravek
-
4091elitebook-8540w-280622/popravljena-meritev-2202.csv
-
69elitebook-8540w-280622/t-fazni-sum
-
2048elitebook-8540w-280622/tcos-5mhz-polinom-2048tock.csv
-
47elitebook-8540w-280622/tmeritev+popravek
-
47elitebook-8540w-280622/tmeritev-odziva
-
4091elitebook-8540w-280622/veriga-dobra.csv
-
4091elitebook-8540w/chain.csv
-
4091elitebook-8540w/chain1.csv
-
82elitebook-8540w/fazni-sum-floor
-
4091elitebook-8540w/floor.csv
-
4091elitebook-8540w/floor1.csv
-
4091pll.csv
4096
elitebook-8540w-280622/10mhz-polinom-2048tock.csv
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
4096
elitebook-8540w-280622/5mhz-polinom-2048tock.csv
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
4091
elitebook-8540w-280622/chain.csv
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
4091
elitebook-8540w-280622/chain1.csv
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,81 @@ |
|||
#!/usr/bin/python3 |
|||
|
|||
print('*** Preprost zvočni spektralni analizator - S53MV 28.09.2020 ***') |
|||
print('*** popravek odziva za EliteBook 8540w - Andrej 11.2.2012 ***') |
|||
print('*** meritev faznega suma (interpolacija in povprecenje v frekvenci-sai) - Andrej 15.2.2012 ***') |
|||
|
|||
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 |
|||
import matplotlib.animation as animation |
|||
|
|||
sd.default.device = 0 |
|||
fskala=np.linspace(0,fs/2,2*pts+1)[:-1] #Izračunaj frekvenčno skalo [Hz] |
|||
|
|||
### podatki za kalibracijo sistema |
|||
dSB = -68.2+11.23 #dB |
|||
L = 1256 #metrov |
|||
tau = L*1.4676/3e8 |
|||
|
|||
### popravek odziva |
|||
odziv = np.loadtxt("5mhz-polinom-2048tock.csv", delimiter=',') |
|||
a = odziv[:,1] |
|||
popravek = np.max(a[4:-1])-a[4:-1] |
|||
|
|||
|
|||
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[4:-1])),'dB @',"%.1f"%(fskala[np.argmax(s[4:-1])]),'Hz') |
|||
return s[4:-1]+popravek |
|||
|
|||
### izris z animacijo |
|||
f=fskala[4:-1] |
|||
rbw = np.diff(f)[0] |
|||
print(rbw) |
|||
initsum = spekter(fs,pts,avg,fskala) |
|||
fig,ax = plt.subplots() |
|||
raw,pn, = ax.plot(f,initsum,f,initsum) |
|||
ax.set_xlim(100, 100000) |
|||
ax.set_ylim(-130,-30) |
|||
ax.set_ylabel("Fazni šum [dBc/Hz]") |
|||
ax.set_xlabel("Frekvenčni odmik [Hz]") |
|||
plt.yticks(np.arange(-130,-29,10)) |
|||
plt.xscale('log') |
|||
ax.grid(True) |
|||
|
|||
def meritev(nic): |
|||
s = spekter(fs,pts,avg,fskala) |
|||
Pcal = np.amax(s) |
|||
K = Pcal - 3 - dSB |
|||
fsum = s - K - 3 - 6 - 20*np.log10(np.sin(f*np.pi*tau)) -10*np.log10(rbw) |
|||
raw.set_data(f,s) |
|||
pn.set_data(f,fsum) |
|||
ax.figure.canvas.draw() |
|||
return raw,pn |
|||
|
|||
ani = animation.FuncAnimation(fig,meritev,interval=50) |
|||
plt.show() |
|||
|
|||
#shrani csv file |
|||
s = spekter(fs,pts,avg,fskala) |
|||
Pcal = np.amax(s) |
|||
K = Pcal - 3 - dSB |
|||
fsum = s - K - 3 - 6 - 20*np.log10(np.sin(f*np.pi*tau)) -10*np.log10(rbw) |
|||
data = np.column_stack((f,fsum,s)) |
|||
np.savetxt('rezultat.csv',data,delimiter=',') |
|||
print('*** Konec ***') |
@ -0,0 +1,82 @@ |
|||
#!/usr/bin/python3 |
|||
|
|||
print('*** Preprost zvočni spektralni analizator - S53MV 28.09.2020 ***') |
|||
print('*** popravek odziva za EliteBook 8540w - Andrej 11.2.2012 ***') |
|||
print('*** meritev faznega suma (interpolacija in povprecenje v frekvenci-sai) - Andrej 15.2.2012 ***') |
|||
|
|||
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 |
|||
import matplotlib.animation as animation |
|||
|
|||
sd.default.device = 0 |
|||
fskala=np.linspace(0,fs/2,2*pts+1)[:-1] #Izračunaj frekvenčno skalo [Hz] |
|||
|
|||
### podatki za kalibracijo sistema |
|||
dSB = -65.36+14.33 #dB |
|||
L = 1256 #metrov |
|||
tau = L*1.4676/3e8 |
|||
T = 1*1.4676/3e8 |
|||
|
|||
### popravek odziva |
|||
odziv = np.loadtxt("5mhz-polinom-2048tock.csv", delimiter=',') |
|||
a = odziv[:,1] |
|||
popravek = np.max(a[4:-1])-a[4:-1] |
|||
|
|||
|
|||
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[4:-1])),'dB @',"%.1f"%(fskala[np.argmax(s[200:-1])]),'Hz') |
|||
return s[4:-1]+popravek |
|||
|
|||
### izris z animacijo |
|||
f=fskala[4:-1] |
|||
rbw = np.diff(f)[0] |
|||
print(rbw) |
|||
initsum = spekter(fs,pts,avg,fskala) |
|||
fig,ax = plt.subplots() |
|||
raw,pn, = ax.plot(f,initsum,f,initsum) |
|||
ax.set_xlim(100, 100000) |
|||
ax.set_ylim(-130,-30) |
|||
ax.set_ylabel("Fazni šum [dBc/Hz]") |
|||
ax.set_xlabel("Frekvenčni odmik [Hz]") |
|||
plt.yticks(np.arange(-150,-29,10)) |
|||
plt.xscale('log') |
|||
ax.grid(True) |
|||
|
|||
def meritev(nic): |
|||
s = spekter(fs,pts,avg,fskala) |
|||
Pcal = np.amax(s) |
|||
K = Pcal - 3 - dSB - 20*np.log10(np.pi*T*84e3) |
|||
fsum = s - K - 3 - 6 - 20*np.log10(np.sin(f*np.pi*tau)) -10*np.log10(rbw) |
|||
raw.set_data(f,s) |
|||
pn.set_data(f,fsum) |
|||
ax.figure.canvas.draw() |
|||
return raw,pn |
|||
|
|||
ani = animation.FuncAnimation(fig,meritev,interval=50) |
|||
plt.show() |
|||
|
|||
#shrani csv file |
|||
s = spekter(fs,pts,avg,fskala) |
|||
Pcal = np.amax(s[200:-1]) |
|||
K = Pcal - 3 - dSB - 20*np.log10(np.pi*T*84e3) |
|||
fsum = s - K - 3 - 6 - 20*np.log10(np.sin(f*np.pi*tau)) -10*np.log10(rbw) |
|||
data = np.column_stack((f,fsum,s)) |
|||
np.savetxt('floor.csv',data,delimiter=',') |
|||
print('*** Konec ***') |
4091
elitebook-8540w-280622/floor1.csv
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
4091
elitebook-8540w-280622/floor1m-oeo.csv
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
4091
elitebook-8540w-280622/floor2.csv
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
4091
elitebook-8540w-280622/floor2m-kul-meritev.csv
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
4091
elitebook-8540w-280622/floor2m-oeo.csv
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
4091
elitebook-8540w-280622/floor3-1m-oeo.csv
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,48 @@ |
|||
#!/usr/bin/python3 |
|||
|
|||
print('*** Preprost zvočni spektralni analizator - S53MV 28.09.2020 ***') |
|||
print('*** popravek odziva za EliteBook 8540w - Andrej 11.2.2012 ***') |
|||
|
|||
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] |
|||
|
|||
### popravek odziva |
|||
odziv = np.loadtxt("5mhz-polinom-2048tock.csv", delimiter=',') |
|||
a = odziv[:,1] |
|||
popravek = np.max(a[4:-1])-a[4:-1] |
|||
|
|||
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[4:-1]+popravek |
|||
|
|||
wfbp=None |
|||
while wfbp!=True: #Prvo risanje spektra z normalizacijo, ponovi s klikom miške |
|||
fig,ax=plt.subplots() |
|||
line,=ax.plot(fskala[4:-1],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('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 |
4091
elitebook-8540w-280622/oeo-3.csv
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
4091
elitebook-8540w-280622/oeo-vidmar-amp.csv
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
4091
elitebook-8540w-280622/oeo.csv
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,17 @@ |
|||
#!/usr/bin/python3 |
|||
|
|||
# brezvezno risanje popravka |
|||
|
|||
import numpy as np |
|||
import matplotlib.pyplot as plt |
|||
|
|||
sum = np.loadtxt("5mhz-polinom-2048tock.csv", delimiter=',') |
|||
print(sum) |
|||
|
|||
f = sum[:,0] |
|||
a = sum[:,1] |
|||
print(f[4:9]) |
|||
print(a[4:9]) |
|||
popravek = np.max(a[4:-1])-a[4:-1] |
|||
plt.plot(f[4:-1],popravek) |
|||
plt.show() |
4091
elitebook-8540w-280622/popravljena-meritev-2202.csv
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,69 @@ |
|||
#!/usr/bin/python3 |
|||
|
|||
print('*** Preprost zvočni spektralni analizator - S53MV 28.09.2020 ***') |
|||
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 |
|||
import matplotlib.animation as animation |
|||
|
|||
sd.default.device = 0 |
|||
fskala=np.linspace(0,fs/2,pts+1)[:-1] #Izračunaj frekvenčno skalo [Hz] |
|||
|
|||
### podatki za kalibracijo sistema |
|||
dSB = -61.95+15.53 #dB |
|||
L = 1256 #metrov |
|||
tau = L*1.4676/3e8 |
|||
|
|||
### popravek odziva |
|||
odziv = np.loadtxt("tcos-5mhz-polinom-2048tock.csv", delimiter=',') |
|||
a = odziv[:,1] |
|||
popravek = np.max(a[4:-1])-a[4:-1] |
|||
|
|||
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(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])[:-1])) |
|||
k+=pts |
|||
s=10*np.log10(nz+0.5*s2/pts/pts/avg) #Povprečje [dB] |
|||
print(' Max:',"%.1f"%(np.amax(s[4:-1])),'dB @',"%.1f"%(fskala[np.argmax(s[4:-1])]),'Hz') |
|||
return s[4:-1]+popravek |
|||
|
|||
### izris z animacijo |
|||
f=fskala[4:-1] |
|||
initsum = spekter(fs,pts,avg,fskala) |
|||
fig,ax = plt.subplots() |
|||
raw,pn, = ax.plot(f,initsum,f,initsum) |
|||
ax.set_xlim(100, 100000) |
|||
ax.set_ylim(-130,-30) |
|||
ax.set_ylabel("Fazni šum [dBc/Hz]") |
|||
ax.set_xlabel("Frekvenčni odmik [Hz]") |
|||
plt.yticks(np.arange(-130,-29,10)) |
|||
plt.xscale('log') |
|||
ax.grid(True) |
|||
|
|||
def meritev(nic): |
|||
s = spekter(fs,pts,avg,fskala) |
|||
Pcal = np.amax(s) |
|||
K = Pcal - 3 - dSB |
|||
fsum = s - K - 3 - 6 - 20*np.log10(np.sin(f*np.pi*tau)) |
|||
raw.set_data(f,s) |
|||
pn.set_data(f,fsum) |
|||
ax.figure.canvas.draw() |
|||
return raw,pn |
|||
|
|||
ani = animation.FuncAnimation(fig,meritev,interval=50) |
|||
plt.show() |
|||
|
|||
print('*** Konec ***') #pritisk tipke na tipkovnici |
2048
elitebook-8540w-280622/tcos-5mhz-polinom-2048tock.csv
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,47 @@ |
|||
#!/usr/bin/python3 |
|||
|
|||
print('*** Preprost zvočni spektralni analizator - S53MV 28.09.2020 ***') |
|||
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,pts+1)[:-1] #Izračunaj frekvenčno skalo [Hz] |
|||
|
|||
### popravek odziva |
|||
odziv = np.loadtxt("tcos-5mhz-polinom-2048tock.csv", delimiter=',') |
|||
a = odziv[:,1] |
|||
popravek = np.max(a[4:-1])-a[4:-1] |
|||
|
|||
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(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])[:-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[4:-1]+popravek |
|||
|
|||
wfbp=None |
|||
while wfbp!=True: #Prvo risanje spektra z normalizacijo, ponovi s klikom miške |
|||
fig,ax=plt.subplots() |
|||
line,=ax.plot(fskala[4:-1],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,47 @@ |
|||
#!/usr/bin/python3 |
|||
|
|||
print('*** Preprost zvočni spektralni analizator - S53MV 28.09.2020 ***') |
|||
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,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(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])[:-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('tcos-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 |
4091
elitebook-8540w-280622/veriga-dobra.csv
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
4091
elitebook-8540w/chain.csv
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
4091
elitebook-8540w/chain1.csv
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,82 @@ |
|||
#!/usr/bin/python3 |
|||
|
|||
print('*** Preprost zvočni spektralni analizator - S53MV 28.09.2020 ***') |
|||
print('*** popravek odziva za EliteBook 8540w - Andrej 11.2.2012 ***') |
|||
print('*** meritev faznega suma (interpolacija in povprecenje v frekvenci-sai) - Andrej 15.2.2012 ***') |
|||
|
|||
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 |
|||
import matplotlib.animation as animation |
|||
|
|||
sd.default.device = 0 |
|||
fskala=np.linspace(0,fs/2,2*pts+1)[:-1] #Izračunaj frekvenčno skalo [Hz] |
|||
|
|||
### podatki za kalibracijo sistema |
|||
dSB = -65.36+14.33 #dB |
|||
L = 1256 #metrov |
|||
tau = L*1.4676/3e8 |
|||
T = 0.5*1.4676/3e8 |
|||
|
|||
### popravek odziva |
|||
odziv = np.loadtxt("5mhz-polinom-2048tock.csv", delimiter=',') |
|||
a = odziv[:,1] |
|||
popravek = np.max(a[4:-1])-a[4:-1] |
|||
|
|||
|
|||
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[4:-1])),'dB @',"%.1f"%(fskala[np.argmax(s[200:-1])]),'Hz') |
|||
return s[4:-1]+popravek |
|||
|
|||
### izris z animacijo |
|||
f=fskala[4:-1] |
|||
rbw = np.diff(f)[0] |
|||
print(rbw) |
|||
initsum = spekter(fs,pts,avg,fskala) |
|||
fig,ax = plt.subplots() |
|||
raw,pn, = ax.plot(f,initsum,f,initsum) |
|||
ax.set_xlim(100, 100000) |
|||
ax.set_ylim(-130,-30) |
|||
ax.set_ylabel("Fazni šum [dBc/Hz]") |
|||
ax.set_xlabel("Frekvenčni odmik [Hz]") |
|||
plt.yticks(np.arange(-150,-29,10)) |
|||
plt.xscale('log') |
|||
ax.grid(True) |
|||
|
|||
def meritev(nic): |
|||
s = spekter(fs,pts,avg,fskala) |
|||
Pcal = np.amax(s) |
|||
K = Pcal - 3 - dSB - 20*np.log10(np.pi*T*84e3) |
|||
fsum = s - K - 3 - 6 - 20*np.log10(np.sin(f*np.pi*tau)) -10*np.log10(rbw) |
|||
raw.set_data(f,s) |
|||
pn.set_data(f,fsum) |
|||
ax.figure.canvas.draw() |
|||
return raw,pn |
|||
|
|||
ani = animation.FuncAnimation(fig,meritev,interval=50) |
|||
plt.show() |
|||
|
|||
#shrani csv file |
|||
s = spekter(fs,pts,avg,fskala) |
|||
Pcal = np.amax(s[200:-1]) |
|||
K = Pcal - 3 - dSB - 20*np.log10(np.pi*T*84e3) |
|||
fsum = s - K - 3 - 6 - 20*np.log10(np.sin(f*np.pi*tau)) -10*np.log10(rbw) |
|||
data = np.column_stack((f,fsum,s)) |
|||
np.savetxt('floor.csv',data,delimiter=',') |
|||
print('*** Konec ***') |
4091
elitebook-8540w/floor.csv
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
4091
elitebook-8540w/floor1.csv
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
4091
pll.csv
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
Write
Preview
Loading…
Cancel
Save
Reference in new issue