Il semble que vous calculiez le spectre en faisant la moyenne de 10 fenêtres (sans chevauchement?) Pour obtenir la magnitude au carré à 8192 ou 8193 fréquences (de 0 à Nyquist, mais certains algorithmes peuvent réduire la fréquence de Nyquist au bac 8192).
La première chose à vérifier est que le pic est dans le bon bac. Vous n'avez pas dit quel est le taux d'échantillonnage, mais le bac 743 serait 743/16384 fois le taux d'échantillonnage. Si le signal est vraiment à 800 Hz, cela met Fs à environ 17640 échantillons / seconde. Cela semble faux. Votre signal de test serait probablement à un taux standard tel que 8000, 16000, 22050, 32000, 44100 ou 48000. Pour Fs = 22050, le pic serait brusquement dans le bac 800/22050 * 16384 = 594.
Un autre critère à vérifier est que l'énergie totale dans le signal est approximativement la même dans les domaines temporel et fréquentiel. Voici un exemple en Python:
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
Le signal d'entrée x, qui se compose de deux sinusoïdes échantillonnées à Fs = 22050 échantillons / seconde, est segmenté en 10 fenêtres sans chevauchement de taille NFFT = 2048 échantillons. L'appel à psd (densité spectrale de puissance) calcule le spectre y comme la moyenne de la grandeur au carré de dix DFT à 16384 points (en fait, c'est 8193 points puisque x est une valeur réelle).
L'énergie calculée dans le domaine fréquentiel a un facteur d'échelle de N / 16384 car la fonction psd a été mise à l'échelle y à la taille DFT au lieu de la longueur totale du signal. Que ce soit ou non un problème dépend de la façon dont votre système gère la normalisation du PSD. Une autre normalisation facultative est la mise à l'échelle par 1 / Fs. Cela fait correspondre l'énergie au signal analogique d'origine. Les normalisations par défaut doivent être bien documentées dans la bibliothèque.