8192 veya 8193 frekanslarında (0'dan Nyquist'e) büyüklüğün karesini almak için 10 pencereyi (örtüşmeyen?) Ortalama olarak spektrumu hesaplıyormuşsunuz gibi görünüyor, ancak bazı algoritmalar Nyquist frekansını 8192 bölmesinde düşürebilir).
Kontrol edilecek ilk şey, zirvenin sağ bölmede olmasıdır. Örnekleme hızının ne olduğunu söylemediniz, ancak 743 bölmesi örnekleme hızının 743/16384 katı olacaktır. Sinyal gerçekten 800 Hz ise, bu Fs'yi yaklaşık 17640 örnek / saniyeye getirir. Bu yanlış görünüyor. Test sinyaliniz muhtemelen 8000, 16000, 22050, 32000, 44100 veya 48000 gibi standart bir oranda olacaktır. Fs = 22050 için pik 800/22050 * 16384 = 594'te keskin bir şekilde olacaktır.
Kontrol edilecek diğer bir kriter, sinyaldeki toplam enerjinin hem zaman hem de frekans alanlarında yaklaşık olarak aynı olduğudur. İşte Python'da bir örnek:
In [1]: NFFT = 2048; N = 10*NFFT; n = arange(N); Fs = 22050
In [2]: x = 0.4*cos(2*pi*400/Fs*n) + 0.6*cos(2*pi*800/Fs*n)
In [3]: y,freqs = psd(x, NFFT=NFFT, Fs=Fs, pad_to=16384) # PSD by Welch's Method
In [4]: sum(x**2)/Fs # time-domain energy
Out[4]: 0.24149869319296949
In [5]: sum(y) * N/16384 # frequency-domain energy
Out[5]: 0.24148752834391252
Fs = 22050 örnek / saniyede örneklenen iki sinüzoidden oluşan giriş sinyali x, NFFT = 2048 örnek büyüklüğünde 10 örtüşmeyen pencereye bölünür. Psd'ye (güç spektral yoğunluğu) yapılan çağrı y spektrumunu on 16384 noktalı DFT'nin karesi alınmış büyüklüğün ortalaması olarak hesaplar (aslında x gerçek değerli olduğundan 8193 puntodur).
Hesaplanan frekans-alan enerjisi N / 16384'lük bir ölçeklendirme faktörüne sahiptir, çünkü psd fonksiyonu y'yi toplam sinyal uzunluğu yerine DFT boyutuna ölçeklendirmiştir. Bunun bir sorun olup olmadığı, sisteminizin PSD'yi normalleştirme biçimine bağlıdır. Bir başka isteğe bağlı normalleştirme, 1 / Fs ile ölçeklendirmedir. Bu, enerjiyi orijinal analog sinyale eşleştirir. Varsayılan normalleştirmeler kütüphanede iyi belgelenmelidir.