2017-07-17 3 views
0

Je n'aime pas faire un PSD (basé sur la moyenne de Welch) de mon module sdr en python. J'utilise cette fonction:MATPLOT PSD (Spectrale de densité de puissance)

matplotlib.mlab.psd(x, NFFT=None, Fs=None, detrend=None, window=None, noverlap=None, pad_to=None, sides=None, scale_by_freq=None) 

Source

En fait, mon problème est sur la façon de choisir l'écart entre chaque valeur?

Par exemple, je veux avoir 10 valeurs comprises entre 105 et 106. Je vais donc 10 valeurs comme ceci:

105.1, 105.2 105.3 105.4 105.5 105.6 105.7 105.8 105.9 106

Acutally Je l'ai fait:

psd(samples, NFFT=10, Fs=sdr.sample_rate/1e6, Fc=sdr.center_freq) 

Mon module radio ont un taux d'échantillonnage de 1,024 MHz, mais l'écart entre chaque valeur n'est pas régulier comme ceci: Fc=105.3 ===> 105.300001 105.300003.....

Source: https://github.com/roger-/pyrtlsdr

Merci.

Répondre

0

mlab.psd() utilise un algorithme qui ne gère pas les intervalles de temps irrégulièrement espacés. Vous pouvez soit arrondir ou interpoler à des points de temps uniformément espacés. Jetez un oeil à this answer sur le traitement de ce problème.

+0

oh ok, donc ils n'ont pas de solution de cette fonction pour gérer les intervalles de temps irrégulièrement espacées. Peut-être qu'il existe une autre fonction FFT pour le faire? – azzerty2017

+0

Jetez un oeil à [this] (https://pypi.python.org/pypi/pyNFFT) module –

+0

Si je veux continuer à utiliser PSD. Il vaut mieux arrondir ou interpoler? – azzerty2017