Je pensais que le DSP se ferait en utilisant la FFT de portions de un signal, modifiez les échantillons qui résultent de la FFT (puisquils représentent le spectre de notre signal + bruit) et supprimez tous les signaux indésirables et faites une FFT inverse pour obtenir une représentation dans le domaine temporel du signal filtré (le bruit a été supprimé maintenant) . Cependant, cela nest pas fait, à la place nous faisons tout le travail dans le domaine temporel en utilisant les fonctions de fenêtre. Pourquoi?

Si nous multiplions la fonction de fenêtre dans le domaine temporel que nous convoluons la réponse en fréquence de la fonction de fenêtre avec le spectre de notre signal dans le domaine de fréquence, comment cela fonctionne-t-il? Je veux dire si nous venons de tout faire le travail dans le domaine fréquentiel en multipliant notre signal avec la réponse en fréquence du filtre, ce serait comme un filtrage non? Mais ici, nous faisons tout le truc dans le domaine temporel à la place en utilisant window.

-> Voyons où ma confusion vient de. Pour les filtres analogiques, par exemple le filtre passe-bas, nous avons cette impulsion comme réponse en fréquence. Lorsque nous filtrons un signal, nous multiplions effectivement le spectre de notre signal avec limpulsion comme la réponse en fréquence du filtre. Cela réduira toutes les fréquences de notre signal au-dessus dune coupure à 0. Cest ainsi que fonctionne essentiellement un filtre passe-bas. Pourquoi ne pas faire de même avec les filtres numériques?

Commentaires

Réponse

Le fenêtrage réduit le spectre fuite.

Supposons que vous commenciez par un $ \ sin (y) = \ cos (\ omega_0 t) $. La période est évidemment $ 2 \ pi / \ omega_0 $.

Mais si personne ne vous a dit que la période est $ 2 \ pi / \ omega $ et que vous choisissez aveuglément la gamme $ [0, 1.8 \ pi / \ omega_0] $ et prenez FFT de cette forme donde tronquée, vous observera des composantes de fréquence dans dautres fréquences qui sont toutes fausses car les sauts créés par copier-coller la forme donde tronquée pour la périodicité ne sont pas vraiment présents dans le signal dorigine – cest un artefact dune troncature malchanceuse qui ne capture pas la transition entre les périodes en douceur . Idéalement, il ny a quune seule composante spectrale à $ \ omega = \ omega_0 $.

Lobjectif du fenêtrage dans le domaine temporel est de réduire toutes ces composantes spectrales fictives.

Réponse

Le fenêtrage est utilisé car les calculs DFT opèrent sur lextension périodique infinie du signal dentrée. Étant donné que de nombreux signaux réels ne sont pas du tout périodiques ou sont échantillonnés sur un intervalle différent de leur période réelle, cela peut produire de fausses composantes de fréquence au « bord » artificiel entre des intervalles répétés, appelés fuite . En multipliant dabord le signal du domaine temporel par une fonction de fenêtrage qui va à zéro aux deux extrémités, vous créez une transition douce entre des intervalles répétés dans lextension périodique infinie, atténuant ainsi la création de ces composantes de fréquence artificielles lorsque nous prenons ensuite la DFT.

Cet article donne un examen plus approfondi de ce phénomène, ainsi quun aperçu des effets des différentes fonctions de fenêtrage.

Réponse

Je pense que vous confondez deux opérations différentes.

Le fenêtrage dans le domaine temporel est expliqué par @ sam, donc je ne répéterai pas ça. Mais le fenêtrage nest pas fait pour effectuer un filtrage. Le filtrage en multipliant la FFT dun signal par la réponse en fréquence du filtre est tout à fait raisonnable dans de nombreuses situations, et est effectivement fait. Lalternative au filtrage est le temps -convolution de domaine (qui est différente du fenêtrage). Cela a ses propres avantages, comme le fonctionnement sur un signal en « temps réel e « tel quil est mesuré sans attendre que le tout soit stocké puis transformé.

Donc à votre question » Pourquoi ne pas faire la même chose avec les filtres numériques? « , la réponse est simplement » nous faisons , quand ça convient. « 

Commentaires

  • Jai aussi limpression que la convolution et le fenêtrage se sont mélangés dans la question. Bien vous lavez signalé!

Réponse

Il y a eu plusieurs bonnes réponses à cette question. Cependant, jestime quun point important na pas été tout à fait clair. Une partie de la question était de savoir pourquoi nous ne multiplions pas simplement la FFT dun signal par la réponse de filtre souhaitée. Par exemple, si nous voulons filtrer notre signal passe-bas, nous pourrions simplement mettre à zéro toutes les composantes de fréquence supérieures à la fréquence de coupure souhaitée. Il sagit en fait dune application simple de la méthode déchantillonnage de fréquence bien connue pour la conception de filtres FIR. Le problème est que nous pouvons simplement mettre à zéro les composantes de fréquence discrètes calculées par la FFT. Nous navons aucun contrôle sur ce qui se passe entre ces fréquences discrètes .Il savère quune version de filtrage aussi simple ne donnera quune mauvaise atténuation de la bande darrêt (quelle que soit la longueur de la FFT). Si vous avez accès à matlab ou octave, cest très instructif de lessayer vous-même:

x=2*rand(1024,1)-1; X=fft(x); Y=X.*[ones(200,1);zeros(625,1);ones(199,1)]; % lowpass filter y=real(ifft(Y)); % real() just to remove numerical errors Y=fft(y,4096); plot(20*log10(abs(Y(1:2048)))),axis([0,2048,-30,50]) 

Réponse

Si vous nutilisez pas de fenêtre non rectangulaire, alors les résultats de la FFT seront déjà convolués avec la transformation dune fenêtre rectangulaire par défaut (une Sinc périodique) avant deffectuer un filtrage de domaine fréquentiel. par exemple. vous obtiendrez deux filtres appliqués, dont vous ne voudrez probablement pas.

En fenêtrant dans le domaine temporel, avant le filtrage FFT et le domaine fréquentiel, vous remplacez tout filtrage (appelé « fuite » ) fait par fenêtrage rectangulaire, et ainsi ne pas obtenir une convolution de filtre indésirable supplémentaire.

Lautre façon de faire est dutiliser des méthodes de sauvegarde par chevauchement ou par chevauchement sur des fenêtres consécutives, où les effets dune la fenêtre rectangulaire est annulée par les effets similaires des fenêtres adjacentes.

Réponse

Fenêtre dans le domaine temporel parce que

  • nous pouvons garantir zéro sur les bords de la fenêtre
  • les fonctions de fenêtre ont une belle expression analytique dans le domaine spatial
  • de nombreuses fonctions de fenêtre ont un spectre de forme étrange qui serait difficile à approcher
  • seul un nombre fini déchantillons est nécessaire (le fenêtrage peut être fait comme le flux de signal dans)

par exemple depuis wikipedia

entrez la description de limage ici

Le difficile couper le passage à zéro des fonctions de fenêtrage signifie que dans le domaine spectral, ils ont des lobes latéraux qui vont à zéro très lentement. Si nous nous débarrassons de cette contrainte, nous pouvons avoir des fonctions compactes dans les domaines spatial et spectral, comme le filtre gaussien. Cela signifie que vous pouvez filtrer via le domaine spectral mais cela nécessite que tout le signal soit connu.

Si vous avez déjà tout le signal, une autre alternative serait dutiliser wavelets

Réponse

Javais la même question.

Une convolution est la somme intégrale / cumulée du signal du domaine temporel multipliée par la fenêtre. Cela ne doit pas être confondu avec le signal du domaine temporel « fenêtré ».

La fin de cet article ma beaucoup aidé.

Fondamentalement, cela dit que les signaux réels sont finis et couper brusquement un signal réel entraîne de nombreuses fréquences / artefacts indésirables dans le domaine fréquentiel.

Afin déviter / minimiser ces artefacts vous pouvez utiliser une fonction de fenêtre lisse (par exemple en forme de cloche) de sorte que votre échantillon commence et se termine par un zéro, plutôt que de se terminer brusquement par une valeur scalaire non nulle.

Coupure douce

Léchantillon fenêtré ci-dessus aura moins dartefacts dans le domaine de fréquence que léchantillon brut ci-dessous.

Arrêt brutal

Réponse

Il existe deux grandes catégories associées à une FFT et elles constituent 1) un moyen efficace dimplémenter un filtre FIR, et 2) une analyse spectrale.

Pour Filtrage FIR, on ne se soucie pas des fenêtres et ne les utilise pas, à moins que la fenêtre ne corresponde à un filtre, mais ce n’est pas un mince commun g à faire. Les fuites ne sont pas un problème.

Lanalyse spectrale est lendroit où lon utilise des fenêtres. Cest là que vous regardez un capteur attaché à une grosse machine industrielle et essayez de déterminer si au fond de ses entrailles, un roulement tombe en panne. Les roulements grincent lorsquils échouent, mais le bruit quils peuvent est généralement beaucoup plus faible que les autres sons émis par la machine. Cest là quinterviennent les fuites et les moyennes. Étant donné les tonalités fortes, les fuites submergeront le signal faible sur lequel nous recherchons quelques casiers. Il améliore la sensibilité de lanalyse spectrale aux signaux faibles en présence de signaux forts. Il y a un effet similaire lorsque le bruit de fond est en pente. Les informations que nous recherchons sont dans le domaine des fréquences. Cest le même problème dans RADAR, et SONAR, et en géophysique. Voir le signal faible est le but.

Réponse

Le fenêtrage dans le domaine temporel est nécessaire pour éviter quune fréquence unique qui ne se trouve pas exactement sur une tranche de fréquences se répartisse sur tout le spectre. Peut-être que cette page aide: http://www.sm5bsz.com/slfft/slfft.htm Linrad (mon projet vieux de 20 ans) utilise une FFT fenêtrée, puis applique un filtre dans le domaine fréquentiel (mettez à zéro ce que nous ne voulons pas.) Appliquez une fenêtre – ne passez pas brusquement du poids 1 au poids 0 sur les tranches de fréquence. Ensuite, appliquez une FFT à lenvers – mais maintenant sur un nombre de points beaucoup plus petit. Il nest pas nécessaire dinclure tous les intervalles de fréquences dont nous savons quils sont nuls !! En tant que résultat, nous obtenons une fonction de temps avec une taille beaucoup plus petite – cela signifie avec un taux déchantillonnage beaucoup plus faible. La procédure effectue le filtrage et la décimation en une seule étape.Ceci est très efficace dans le cas où lon souhaite filtrer plusieurs canaux en même temps. La page daccueil de Linrad est ici: http://www.sm5bsz.com/linuxdsp/linrad.htm

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *