Je pensais que le DSP serait fait en utilisant la FFT de parties d'un signal, modifier les échantillons qui résultent de la FFT (car ils représentent le spectre de notre signal + bruit) et supprimer tous les signaux indésirables et faire une FFT inverse pour obtenir un temps représentation du domaine du signal filtré (le bruit a maintenant été supprimé). Cependant, cela n'est pas fait, nous effectuons tout le travail dans le domaine temporel à l'aide des fonctions de fenêtre. Pourquoi?
Si nous multiplions la fonction de fenêtre dans le domaine temporel par rapport à la convolution de 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 faisions tout le travail dans le domaine fréquentiel en multipliant notre signal par la réponse en fréquence du filtre, ce serait comme filtrer non? Mais ici, nous faisons tout le travail dans le domaine temporel à la place en utilisant la fenêtre.
-> Voyons d'où vient ma confusion. Pour les filtres analogiques, par exemple le filtre passe-bas, nous avons cette impulsion comme la réponse en fréquence. Lorsque nous filtrons un signal, nous multiplions efficacement le spectre de notre signal avec la réponse en fréquence comme le pouls du filtre. Cela réduira toutes les fréquences de notre signal au-dessus d'une coupure à 0. C'est ainsi que fonctionne essentiellement un filtre passe-bas. Pourquoi ne pas faire de même avec les filtres numériques?
Réponses:
Le fenêtrage réduit les fuites spectrales.
Disons que vous commencez avec un . La période est évidemment 2 π / ω 0 .péché( y) = cos( ω0t ) 2 π/ ω0
Le fenêtrage dans le domaine temporel a pour but de réduire toutes ces composantes spectrales fictives.
la source
Le fenêtrage est utilisé car les calculs DFT opèrent sur l'extension périodique infinie du signal d'entré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 fuites . En multipliant d'abord 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 en douceur entre des intervalles répétés dans l'extension 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 aperçu plus approfondi de ce phénomène, ainsi qu'un aperçu des effets des différentes fonctions de fenêtrage.
la source
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 cela. Mais le fenêtrage n'est pas effectué pour effectuer le filtrage. Le filtrage en multipliant la FFT d'un signal par la réponse en fréquence du filtre est tout à fait raisonnable dans de nombreuses situations, et est en effet effectué. L'alternative pour le filtrage est la convolution dans le domaine temporel (qui est différente du fenêtrage). Cela a ses propres avantages, tels que le fonctionnement sur un signal en «temps réel» car il est mesuré sans attendre que le tout soit stocké puis transformé.
Donc, à votre question «Pourquoi ne pas faire de même avec les filtres numériques?», La réponse est simplement «nous le faisons, quand cela convient».
la source
Il y a eu plusieurs bonnes réponses à cette question. Cependant, j'estime qu'un point important n'a pas été clairement expliqué. Une partie de la question était de savoir pourquoi nous ne multiplions pas simplement la FFT d'un signal avec la réponse de filtre souhaitée. Par exemple, si nous voulons filtrer passe-bas notre signal, nous pourrions simplement mettre à zéro toutes les composantes de fréquence supérieures à la fréquence de coupure souhaitée. Il s'agit en fait d'une simple application de la méthode d'échantillonnage de fréquence bien connue pour concevoir des 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 n'avons aucun contrôle sur ce qui se passe entre ces fréquences discrètes. Il s'avère qu'une version aussi simple du filtrage ne donnera qu'une faible atténuation de la bande d'arrêt (quelle que soit la longueur de la FFT). Si vous avez accès à matlab ou octave, c'est '
la source
Si vous n'utilisez pas de fenêtre non rectangulaire, les résultats FFT seront déjà convolus avec la transformation d'une fenêtre rectangulaire par défaut (un Sinc périodique) avant d'effectuer un filtrage de domaine fréquentiel. Par exemple, vous obtiendrez deux filtres appliqués, dont l'un que vous ne voulez probablement pas.
En fenêtrant dans le domaine temporel, avant le filtrage FFT et fréquentiel, vous remplacez tout filtrage (dit "fuite") effectué par le fenêtrage rectangulaire, et n'obtenez donc pas de convolution de filtre indésirable supplémentaire.
L'autre façon de procéder consiste à utiliser des méthodes d'ajout / chevauchement de chevauchement sur des fenêtres consécutives, où les effets d'une fenêtre rectangulaire sont annulés par des effets similaires des fenêtres adjacentes.
la source
Fenêtre dans le domaine temporel car
par exemple de wikipedia
La coupure dure allant à 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à le signal entier, une autre alternative serait d'utiliser des ondelettes
la source
J'avais la même question.
Une convolution est la somme intégrale / cumulative du signal du domaine temporel multipliée par la fenêtre. Cela ne doit pas être confondu avec le signal de domaine temporel "fenêtré".
La fin de cet article m'a beaucoup aidé.
Fondamentalement, il dit que les signaux réels sont finis et que la coupure brutale d'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) telle que votre échantillon commence et se termine par un zéro, plutôt que de se terminer brutalement par une valeur scalaire non nulle.
L'échantillon fenêtré ci-dessus aura moins d'artefacts dans le domaine fréquentiel que l'échantillon brut ci-dessous.
la source
Il existe deux grandes catégories associées à une FFT et elles sont 1) un moyen efficace de mettre en œuvre un filtre FIR, et 2) l'analyse spectrale.
Pour le filtrage FIR, on ne se soucie pas des fenêtres et ne les utilise pas, sauf si la fenêtre correspond à un filtre, mais ce n'est pas chose courante. La fuite n'est pas une préoccupation.
L'analyse spectrale est l'endroit où l'on utilise des fenêtres. C'est là que vous regardez un capteur attaché à une grosse machine industrielle et essayez de déterminer s'il est au fond de ses entrailles, un roulement défaillant. Les roulements grincent lorsqu'ils échouent, mais le bruit qu'ils peuvent est généralement beaucoup plus faible que les autres sons émis par la machine. C'est là qu'interviennent les fuites et la moyenne. Compte tenu des tonalités fortes, les fuites vont submerger le signal faible que nous recherchons pour quelques bacs. Il améliore la sensibilité de l'analyse spectrale aux signaux faibles en présence de signaux forts. Il y a un effet similaire lorsque le bruit de fond est incliné. Les informations que nous recherchons sont dans le domaine fréquentiel. C'est le même problème dans RADAR, SONAR et Géophysique. Voir le signal faible est l'objectif.
la source
Le fenêtrage dans le domaine temporel est nécessaire pour éviter qu'une seule fréquence qui ne se trouve pas exactement sur un groupe de fréquences ne s'étende sur tout le spectre. Peut-être que cette page aide: http://www.sm5bsz.com/slfft/slfft.htm Linrad (mon projet de 20 ans) utilise une FFT fenêtrée, puis applique un filtre dans le domaine fréquentiel (faites zéro ce que nous ne voulons pas.) Appliquez une fenêtre - ne passez pas brusquement du poids 1 au poids 0 sur les cases de fréquence. Ensuite, appliquez une FFT à l'envers - mais maintenant sur un nombre de points beaucoup plus petit. Il n'est pas nécessaire d'inclure tous les bacs de fréquences que nous savons nuls !! En tant que résultat, nous obtenons une fonction de temps avec une taille beaucoup plus petite - c'est-à-dire avec un taux d'échantillonnage beaucoup plus faible. La procédure effectue le filtrage et la décimation en une seule étape. C'est très efficace dans le cas où l'on veut filtrer plusieurs canaux en même temps. La page d'accueil de linrad est ici: http://www.sm5bsz.com/linuxdsp/linrad.htm
la source