Remplissage zéro dans le domaine des fréquences - traitement spécial de X [N / 2]


18

Supposons que nous souhaitons interpoler un signal périodique avec un nombre pair d'échantillons (par exemple N = 8) par un remplissage nul dans le domaine fréquentiel.

Laissez le DFT X=[A,B,C,D,E,F,G,H]
Maintenant, complétons-le à 16 échantillons pour donner Y. Chaque exemple de manuel et tutoriel en ligne que j'ai vu insérer des zéros à donner . (Alors est le signal interpolé.)[Y4...Y11]
Y=[2A,2B,2C,2D,0,0,0,0,0,0,0,0,2E,2F,2G,2H]
y = idft(Y)

Pourquoi ne pas utiliser à la place Y=[2A,2B,2C,2D,E,0,0,0,0,0,0,0,E,2F,2G,2H]?

Pour autant que je sache (mes connaissances en mathématiques sont limitées):

  • Il minimise la puissance totale
  • Il garantit que si xla valeur réelle l'est aussiy
  • yintersecte toujours xà tous les points d'échantillonnage, comme requis (je pense que cela est vrai pour n'importe pY=[2A,2B,2C,2D,pE,0,0,0,0,0,0,0,(2-p)E,2F,2G,2H])

Alors pourquoi cela n'est-il jamais fait de cette façon?


Edit : xn'est pas nécessairement à valeur réelle ou à bande limitée.


Vous écrivez "Chaque exemple de manuel et tutoriel en ligne où j'ai vu des insertions de zéros à ...", pouvez-vous mettre à jour votre article avec quelques références? Juste curieux parce que vous écrivez également que x n'est pas nécessairement une valeur réelle et que la première construction que vous mentionnez ne produit pas (en général) un résultat réel par DFT inverse.
niaren

@niaren en est un exemple: dspguru.com/dsp/howtos/…
finnw

1
Il convient de noter que pour que soit une valeur réelle, vous devez alors laisser Y = [ 2 A , 2 B , 2 C , 2 D , E , 0 , 0 , 0 , 0 , 0 , 0 , 0 , E , 2 F , 2 G , 2 H ]yY=[2A,2B,2C,2D,E,0,0,0,0,0,0,0,E,2F,2G,2H](c.-à-d. lorsque vous dupliquez E pour la moitié "fréquence négative" du vecteur du domaine fréquentiel, vous devez le conjuguer. Les signaux qui sont réels dans le domaine temporel ont des TFD symétriques conjugués.
Jason R

1
@Jason R, si le signal d'entrée est à valeur réelle, alors E est aussi [2A, 2B, 2C, 2D, E, 0,0,0,0,0,0,0,0, E, 2F, 2G, 2H] remplit cette condition. Si l'entrée n'est pas à valeur réelle, il n'est pas nécessaire de forcer la sortie à être à valeur réelle.
finnw

Vous avez raison. C'est ce que j'obtiens en écrivant un commentaire trop tard dans la soirée.
Jason R

Réponses:


7

Regardons les fréquences des bacs dans votre DFT à 8 points:

Ainsi, lorsque vous interpolez par un facteur 2 ,la fréquence dupointEdevient-πou+π.

ωA=0,ωB=π/4,ωC=π/2,ωD=3π/4,ωE=π=π (mod 2π),ωF=5π/4=3π/4 (mod 2π),ωG=3π/2=π/2 (mod 2π),ωH=7π/4=π/4 (mod 2π)
Eπ+π

À première vue, je ne vois pas quel est le problème avec votre approche car il n'est pas clair si doit être mis dans le bac associé à π ou - π .Eππ

Sur la page de Julius O. Smith III , il énonce une condition:

De plus, nous avons besoin de lorsque N est pair, alors que impair ne nécessite pas une telle restriction.x(N/2)=x(N/2)=0N

Et son exemple est pour un impair , ce qui évite le problème.N


Je ne sais pas si c'est obligatoire, mais voici la référence complète au travail de Julius:

Smith, JO Mathematics of the Discrete Fourier Transform (DFT) with Audio Applications, Second Edition, http://ccrma.stanford.edu/~jos/mdft/ , 2007, livre en ligne, consulté le 28 septembre 2011.


2

Il existe plusieurs façons d'interpoler des données. L'interpolation dans mon esprit signifie que vous «tracez» des lignes entre certains points de données. Cela peut se faire de plusieurs façons. Un type d'interpolation utile dans le DSP (en particulier dans le DSP multidébit) est «l'interpolation à bande limitée». Si vous googlez, vous obtiendrez de nombreux hits intéressants et utiles. Ce que vous proposez n'est pas une interpolation à bande limitée. Dans votre x suréchantillonné, vous avez des composantes de fréquence non présentes dans le x d'origine.

Modifier (trop long pour tenir dans un commentaire):

Il existe une différence assez importante entre votre construction, à commencer par et l'exemple dans la référence que vous fournissez.X=[A,B,C,D,E,F,G,H]

Tenir compte d'une réelle contribution

X=[A,B,C,D,E,D,C,B]

Suréchantillonnage d'un facteur 2 pour l'entrée pleine bande. Dans ce cas - échantillonnage peut être effectué par des premiers zéros de placer dans l'entrée entrelacée (qui est . Le résultat est un signal ayant un spectre de fréquences contenant une version compressée du spectre de fréquences de x (dans la plage 0 - π / 2 ) et une image s'étendant de π / 2 - π (en considérant uniquement l'axe de fréquence positif). Si x2 est la version suréchantillonnée, alorsx0,0,x1,0,...0π/2π/2π

X2=[A,B,C,D,E,D,C,B,A,B,C,D,E,D,C,B]

π/2

yn=k=x2ksinc(0.5nk)

En pratique, cependant, il y aura une certaine distorsion car le filtre de mur de briques n'est pas réaliste. Le filtre pratique peut supprimer / supprimer des fréquences dans l'entrée ou il peut laisser dans certaines des composantes de fréquence de l'image dans le signal suréchantillonné. Ou le filtre peut faire un compromis entre les deux. Je pense que votre construction dans le domaine des fréquences reflète également ce compromis. Ces deux exemples représentent deux choix différents:

Y=[A,B,C,D,E,0,0,0,0,0,0,0,E,D,C,B]

Y=[A,B,C,D,0,0,0,0,0,0,0,0,0,D,C,B]

Si l'entrée est limitée en bande en dessous de la fréquence nyquist comme dans votre référence, ce problème disparaît.

ρ

Y=[A,B,C,D,ρ,0,0,0,0,0,0,0,ρ,D,C,B]


1
Sure it's bandlimited interpolation. What do you mean, frequency components not present in the original x?
leftaroundabout

@leftaroundabout The original x is bandlimited (in this example to the Nyquist frequency). OP wants to upsample x by a factor of 2 (my interpretation). One way to upsample x is to insert zeros in the frequency response as shown by OP (the example without E, the one shown in DSP text books) and do an inverse FFT. I believe the same could have been achived by inserting zeros (interleaved) in x and (low-pass) filter by a sinc. By inserting E as shown by OP, the upsampled x is not bandlimited to the original Nyquist frequency. This is typically not desired (it is distortion). Do you agree?
niaren

1
Inserting zeroes interleaved and convoluting with a sinc (multiplied by 2) should indeed be the corresponding time-domain operation. — I don't think it's distortion: the two bins the OP put Es in represent both the same frequency, π2π2.
leftaroundabout

I am assuming the frequency ±N/2 is present in x. If it is not (due to bandlimiting or otherwise) then E would be 0 anyway so there would be no difference between padding with E (or 2E) and padding with 0.
finnw

1
A bandlimited signal can still have content in bin N/2 due to "spectral leakage" from any non-periodic-in-DFT-aperture spectral content, especially near (but not at) Fs/2.
hotpaw2
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.