Qu'est-ce que NFFT utilisé dans fft() fonction dans matlab?
J'ai un signal audio de l'échantillon au taux de 10Khz, j'ai besoin de trouver des coefficients de fourier de mon signal. J'ai vu un exemple dans mathwork du site web où ils sont à l'aide de code suivant pour effectuer la fft la décomposition d'un signal y:
NFFT = 2^nextpow2(L);
Y = fft(y,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1);
où L est la longueur du signal, je ne comprends vraiment pas pourquoi sa définition de la variable NFFT le chemin indiqué dans le code ci-dessus? Je ne peux pas juste choisir n'importe quelle valeur pour NFFT? Aussi pourquoi Fs/2 dans la troisième ligne du code ci-dessus?
La dernière ligne doit avoir été
linspace(0, Fs/2, NFFT/2+1)
- quel est le point de l'utilisation de la fonction qui minimise l'erreur d'arrondi, et en introduisant de l'erreur d'arrondi?OriginalL'auteur Spandy | 2015-04-03
Vous devez vous connecter pour publier un commentaire.
NFFT
peut être n'importe quelle valeur positive, mais FFT calculs sont généralement beaucoup plus efficace lorsque le nombre d'échantillons peut être pris en compte dans les petits nombres premiers. Citant La documentation Matlab:Il est donc commun à calculer la FFT pour la puissance de 2 qui est plus grand ou égal au nombre d'échantillons du signal
y
. C'est ce queNFFT = 2^nextpow2(L)
(dans le Exemple de documentation Matlaby
est construit de façon à avoir une longueurL
).Lorsque
NFFT > L
le signal est égale à zéro rembourré pour leNFFT
longueur.Autant que
fs/2
va, c'est tout simplement parce que le spectre de fréquences d'une véritable valeur du signal a Hermitian symétrie (ce qui signifie que les valeurs du spectre au-dessus defs/2
peut être obtenu à partir du complexe conjugué de l'valeurs ci-dessousfs/2
), et en tant que telle est complètement spécifie à partir de la premièreNFFT/2+1
valeurs (avec l'indexNFFT/2+1
correspondant àfs/2
). Donc, au lieu de montrer la redondance de l'information ci-dessusfs/2
, le exemple choisi d'illustrer uniquement le spectre jusqu'àfs/2
.OriginalL'auteur SleuthEye
Sortie de la FFT est complexe pour de vrai valorisé. Cela signifie que pour un signal échantillonné à Fs Hz, La transformée de fourier de ce signal aura composantes de fréquence à partir d'-Fs/2 à Fs/2 et est symétrique par rapport à zéro Hz. (Critère de Nyquist) stipule que, si vous avez un signal avec un maxium de la composante de fréquence f en Hz, vous devez échantillon avec au moins 2f Hz .
Vous pouvez vous demander quel est négatif de fréquence moyenne ici. Si vous êtes un mathématicien vous pouvez soin sur le négatif de fréquence, mais si vous êtes un ingénieur, vous pouvez choisir d'ignorer la notion de négatif de fréquence et de se concentrer uniquement sur les fréquences de 0 à Fs/2. (Fréq Max composant pour un signal échantillonné à Fs Hz Fs/2)
À l'aide de la FFT pour en savoir plus sur les composants de fréquence présente dans le signal n'est cumbsrsome. Vous pouvez utiliser la fonction pwelch fonction dans MATLAB pour en savoir plus les fréquences présentes dans le signal et la puissance de ces signaux. MATLAB calculera automatiquement la NFFT requis et revenir les fréquences présentes dans le signal avec le pouvoir, à chaque fréquence. Utilisez cette syntaxe:
[p,f] = pwelch(x,[],[],[],Fs)
Regardez la documentation de pwelch pour plus d'informations.
OriginalL'auteur kdave