J'ai posé une question sur le débordement de pile .
J'ai cependant un petit problème. Comme suggéré par Paul RI suis en miroir mes inférieurs bacs dans les supérieurs bacs.
J'ai cependant quelques questions.
- Je suppose que est ? Ainsi, pour une commande de 10 IFFT, je mettrais en miroir les 512 bacs de fréquence inférieurs dans les 512 premiers? Cela me produirait également 1024 vrais échantillons à la fin?
- Lors de la mise en miroir, cela signifie-t-il que le bac 0 irait au bac , le bac 1 au bac et ainsi de suite?
- Il semble que j'obtienne une forme de réflexion à un quart de ma fréquence d'échantillonnage? Cela signifie que la moitié supérieure de ma gamme de fréquences apparaît en fait sur la moitié inférieure. Quelqu'un at-il des idées pourquoi?
- Quelqu'un a-t-il une idée de la raison pour laquelle j'obtiens un effet de striping où j'obtiens 512 échantillons d'une amplitude et les 512 suivants d'une autre? (Ce "pourrait" être d'où vient ma mise en miroir)
Je pense que c'est tout pour l'instant. Toute aide serait extrêmement utile !!
Edit: vous donner une image de la réflexion sera presque impossible car c'est très difficile à voir! Fondamentalement, j'échantillonne à 22 kHz et n'obtiens que du «bruit» au-dessus de 11 kHz. Ce qui devrait (bien que je fais quelque chose de mal) au-dessus de 11 kHz semble se refléter de 11 kHz à 0. C'est très étrange.
Quant à l'image des rayures on peut les voir ici
Je pense que chaque bande a une largeur de 512 échantillons.
Réponses:
Je ne suis pas sûr de ce que vous voulez dire avec "réflexion" ou "entrelacement", mais vous voulez dupliquer vos points de données de telle sorte que le signal du domaine fréquentiel (l'entrée de l'IFFT) soit conjugué symétrique. Cela signifie, parN même:
Notez quek est à base zéro; le premier élément du vecteur estX[ 0 ] . Ce qui précède indique que vous ne dupliquez pas le zéro etN2 -th éléments dans le vecteur d'entrée. Cette relation est basée sur la périodicité de la transformée de Fourier discrète ; la première moitié du vecteur domaine de fréquence correspond à des fréquences "positives" couvrant la gamme de fréquences angulaires de0 à ( N- 1 ) πN . La seconde moitié couvre deπ à ( N- 1 ) 2 πN , qui, profitant de la 2 π périodicité dans le domaine fréquentiel, équivaut à - π à - 2 πN . Pour que le vecteur du domaine fréquentiel ait une symétrie conjuguée, il peut être facilement démontré que la relation ci-dessus doit être vraie.
S'adressant à votre objectif initial de convertir un spectrogramme en un signal audio qui semble significatif, il n'y a aucune garantie que ce que vous sortez sera de quelque manière agréable. Comme cela a été souligné dans Stack Overflow, le spectrogramme n'a aucune information de phase; la méthode suggérée ici suppose que la phase de chaque groupe de domaine de fréquence est nulle (donc l'opération conjuguée illustrée ci-dessus est superflue). Bien que l'oreille humaine ne soit pas terriblement sensible à la distorsion de phase dans l'audio, vous devrez peut-être faire autre chose en fonction de ce que vous espérez atteindre.
la source
Votre index [0] est le composant DC et ne doit pas être mis en miroir. Le point de réflexion doit être (N / 2) +1
la source
Disons que vous avez une séquence réelle de 1024 points. Une FFT complexe transforme cela en 1024 nombres complexes. Cependant X [0] (DC) et X [512] Nyuist sont réels et X [1] .. X [511] sont conjugués symétriques de sorte que l'ensemble du spectre peut toujours être représenté avec 1024 nombres (2 réels et 511 complexes). Supposons que vous ayez un spectre à demi-faces X [0] ... x [512] et que vous vouliez en créer la version symétrique conjuguée Y [0] ... Y [1023]. Procédez comme suit
Si vous utilisez Matlab, vous devez ajouter "1" à tous les indices car Matlab commence à compter à 1 (pas à 0).
la source
La réflexion est normale: elle s'appelle aliasing, ou repliement de fréquence, et elle se produit lorsque le signal que vous échantillonnez dépasse ce que l'on appelle la fréquence de Nyquist, qui se trouve être la moitié de votre fréquence d'échantillonnage. Idéalement, vous voulez une fréquence d'échantillonnage d'au moins deux fois la fréquence du signal que vous échantillonnez, précisément pour cette raison.
la source