Pourquoi y a-t-il des collines en forme de peigne dans un périodogramme?

8

Je joue avec le periodogramMATLAB. J'ai créé un script simple pour observer comment il se comporte:

rng(1);  %# initialize the random number generator

Fs = 1000;  %# Sampling frequency
duration = 0.1; %# seconds

A = 1; %# Sinusoid amplitude
f = 150; %# Sinusoid frequency
eps = 0.01;

t = 0:1/Fs:duration;
x = A * sin(2*pi*f*t) + eps * randn(size(t));

periodogram(x,[],1024,Fs);

entrez la description de l'image ici

Je n'ai aucun problème avec le code et je peux écrire ma propre periodogramfonction en utilisant les algorithmes donnés dans la documentation mais je me demande la raison théorique derrière les collines en forme de peigne qui ne sont pas à 150 Hz. Qu'est-ce que j'obtiens au lieu d'obtenir un seul pic sur 150 Hz? Y a-t-il quelque chose de spécial dans les distances des sommets de ces collines?

Petrichor
la source

Réponses:

5

Je ne suis pas entièrement satisfait de la réponse d'Itamar Katz, alors voici mon explication.

La TFD d'un signal complexe de longueur , estNx[n]=eı2πfn/N

X[k]=F{X[n]}=eje2π(F-k)-1eje2π(F-k)/N-1

Ainsi, la puissance ou la réponse au carré de l'amplitude est donnée par

|X[k]|2=(péché(π(F-k))péché(π(F-k)/N))2

Comme vous pouvez le voir, l'expression ci-dessus est nulle chaque fois que est un entier. Vous pouvez vous convaincre que le dénominateur est nul en un seul point, et à ce stade, prendre des limites vous donne une valeur pour le rapport. Par conséquent, il n'y a aucun moment où l'expression explose.F-kN2

Maintenant, lorsque vous prenez le journal de l'expression ci-dessus, est (ou d'ailleurs, dans n'importe quelle base) et donc vous obtenez des valeurs nulles partout où vous avez eu un zéro. C'est ce qui se traduit par le "peigne comme des collines" dans votre parcelle.logdix(0)-

Voici une courte illustration dans Mathematica:

Clear@X
X[f_, n_] := (Sin[π (f - #)]/Sin[π (f - #)/n])^2 &
Plot[X[3, 10][k], {k, -5, 5}, PlotRange -> All]

entrez la description de l'image ici

La fréquence est sur l'axe des x et la puissance (linéaire) est sur l'axe des y. Vous pouvez voir que les zéros se produisent à des valeurs entières et le pic est à 3, qui est la fréquence que j'avais choisie. Maintenant, en prenant de ce qui précède, vous obtenez des valeurs nulles qui donnent naissance à la structure en forme de peignelogdix

entrez la description de l'image ici

Voici un autre exemple avec un plus grand , montrant plus de null.N

entrez la description de l'image ici

Lorem Ipsum
la source
12

Un seul pic (comme vous l'appelez) n'apparaît théoriquement que pour une sinusoïde de longueur infinie. Puisque votre signal a une longueur de 100 échantillons, il n'est pas infini. Vous avez en fait multiplié votre signal infini avec une fenêtre qui a une valeur de 1 sur 100 échantillons et de 0 ailleurs. Étant donné que la multiplication dans le domaine temporel équivaut à la convolution dans le domaine fréquentiel, votre spectre est une convolution de la pointe unique et la réponse en fréquence de la fenêtre (btw on l'appelle fenêtre rectangulaire). C'est la fonction que vous avez.

Je vous suggère de lire sur le fenêtrage: http://en.wikipedia.org/wiki/Window_function

Itamar Katz
la source
+1 Oh, je connaissais le fenêtrage mais je n'ai pas pu faire le lien. Merci!
Petrichor
1
Un seul pic apparaît quelle que soit la fenêtre utilisée, si la fréquence correspond exactement à la longueur de la fenêtre. gist.github.com/236567
endolith
1
Ce n'est pas correct. Pour une fenêtre rectangulaire, cela est vrai, car vous échantillonnez la fonction de fenêtre dans le domaine fréquentiel exactement dans ses zéros, vous êtes donc «aveugle» aux lobes latéraux. Cependant, ce n'est pas vrai pour une fonction de fenêtre générale.
Itamar Katz
voir l'exemple git: //gist.github.com/1403819.git
Itamar Katz
@ItamarKatz: Oui, vous avez raison. Je voulais dire "sans fenêtre".
endolith