Quels sont les avantages relatifs de divers schémas de suréchantillonnage?


12

J'ai récemment rencontré un système DSP qui effectuait un suréchantillonnage interne via un remplissage nul. S'attendant à un maintien d'ordre zéro, j'ai été surpris de constater qu'un signal DC ne produisait pas de sortie DC; de nombreuses harmoniques de la fréquence d'échantillonnage interne (inférieure) étaient également présentes dans la sortie.

Cela m'amène à ma question: quelles techniques de suréchantillonnage sont couramment utilisées et quels sont leurs mérites relatifs? Pourquoi devrais-je choisir un remplissage nul, un maintien d'ordre zéro ou un maintien de premier ordre, et quelles autres techniques sont disponibles?

Quelques clarifications:

  • Le système est en temps réel, le schéma de suréchantillonnage doit donc être causal.
  • Le suréchantillonneur est suivi d'un filtre anti-aliasing qui peut également être spécifié.

Réponses:


11

Pour les besoins de cette réponse, j'utiliserai la terminologie de Matlab et définirai le «suréchantillonnage» comme le processus d'insertion de zéros entre les échantillons d'entrée et «l'interpolation» comme le processus combiné de suréchantillonnage et de filtrage pour supprimer les alias ( étant le facteur d'interpolation) introduit par le suréchantillonnage. Pour une explication de la façon / pourquoi le suréchantillonnage introduit des alias, veuillez consulter ce fil .m - 1 mm1m1m

Il est important de comprendre que n'importe quel filtre passe-bas peut être utilisé pour se débarrasser des alias et ainsi terminer l'interpolation. Certains filtres ont cependant des avantages lorsqu'ils sont utilisés en interpolation. Je vais discuter des différentes variantes du filtrage d'interpolation ci-dessous.

Filtre FIR

Les filtres FIR d'interpolation sont efficaces car ils combinent le suréchantillonnage et le filtrage d'alias en une seule étape. Ceci est plus facilement visible dans un exemple. Supposons que nous ayons une séquence de données et que nous voulons l'interpoler par un facteur de deux. La première étape consiste à suréchantillonner d'un facteur deux. Cela change la séquence de données d'origine de à .x 0 , x 1 , . . . x N x 0 , 0 , x 1 , 0 , . . . x Nx[n]x0,x1,...xNx0,0,x1,0,...xN

Supposons maintenant que nous ayons un filtre FIR passe-bas, , que nous utiliserons pour supprimer l'alias. Lorsque nous faisons convoluer la séquence de données suréchantillonnées avec le filtre, la moitié des prises de filtre sont stimulées par les échantillons non nuls et la moitié des prises sont inactives car elles correspondent aux échantillons nuls. La moitié qui est stimulée et la moitié qui est inactive bascule d'avant en arrière lorsque le filtre parcourt les données. Ces deux ensembles de prises sont parfois appelés phases de filtrage.h[n]

Ce même effet peut être obtenu implicitement en éliminant le suréchantillonnage et en filtrant la séquence de données d'origine avec un filtre FIR d'interpolation. Le filtre FIR interpolant produit sorties pour chaque échantillon d'entrée. Pour toutes les sorties le filtre fonctionnera sur les mêmes échantillons d'entrée de plafond (où K est le nombre de prises de filtre et «plafond» est la fonction de plafond).m c e i l ( K / m )mmceil(K/m)

Nous espérons qu'un exemple illustrera comment cela fonctionne. Supposons que nous ayons un filtre à six prises et que nous interpolions par un facteur de deux. Les prises de filtre sont [1 -2 4 4 -2 1]. Si nous interpolions et filtrions littéralement, les échantillons et les prises de filtre s'alignaient (une fois qu'il y avait un chevauchement complet) comme suit:

0:1x2:20:4x1:40:2x0:1
Échantillon suivant ...

x3:10:2x2:40:4x1:20:1
Échantillon suivant ...

0:1x3:20:4x2:40:2x1:1
Et ainsi de suite. Le point du filtre d'interpolation est qu'il saute réellement l'insertion des zéros et alterne simplement le jeu de taps qu'il utilise à la place. Ainsi, la séquence précédente ressemblerait maintenant à la suivante:

x2:2x1:4x0:1

x3:1x2:4x1:2

x3:2x2:4x1:1

Maintien de l'ordre zéro

Un interpolateur de maintien d'ordre zéro est un interpolateur qui répète simplement chaque échantillon fois. Donc, un facteur de deux interpolateurs de maintien d'ordre zéro convertit en . Cette méthode est intéressante car elle est extrêmement facile à mettre en œuvre, à la fois en termes de codage et de charge de calcul.m1x0,x1,...xNx0,x0,x1,x1,...xN,xN

Le problème est que son filtrage passe-bas est assez médiocre. Nous pouvons voir que lorsque nous reconnaissons que l'interpolateur à maintien zéro est un cas spécial d'interpolation FIR. Il correspond à un suréchantillonnage suivi d'un filtre rectangle de largeur . La transformée de Fourier d'un filtre rectangulaire est une fonction sinc, qui est un filtre passe-bas plutôt minable. Sa minable peut être corrigée avec un filtre FIR compensateur, mais si vous allez le faire, vous pourriez tout aussi bien utiliser un bon filtre passe-bas pour commencer.m

Première mise en attente

Le maintien du premier ordre est un pas de plus par rapport à l'interpolateur à maintien zéro en ce qu'il interpole linéairement les suréchantillons en utilisant les deux échantillons d'entrée les plus proches. Ainsi, un facteur de deux interpolateurs de maintien de premier ordre convertirait en .x0,x1,...xNx0,x0+x12,x1,x1+x22,...xN

Comme l'interpolateur de maintien d'ordre zéro, l'interpolateur de maintien de premier ordre est un cas particulier d'interpolation FIR. Cela correspond au suréchantillonnage et au filtrage avec un filtre triangle. Pour une interpolation de facteur deux, le filtre est , pour une interpolation de facteur trois, le filtre est , etc.[1[12112][132312312]

Le filtre triangulaire est constitué de deux filtres rectangulaires convolus, ce qui correspond au carré sinc dans le domaine fréquentiel. Il s'agit là d'une avancée certaine par rapport à la mise en attente d'ordre zéro, mais ce n'est toujours pas grand.

Filtre IIR

Je n'ai jamais utilisé de filtre IIP interpolateur donc je n'en dirai pas long sur eux. Je suppose que les mêmes arguments s'appliquent que dans le filtrage normal - les filtres IIR sont plus efficaces, peuvent être instables, n'ont pas de phase linéaire, etc. Je ne pense pas qu'ils puissent combiner les étapes de suréchantillonnage et de filtrage comme un filtre FIR, mais je peux me tromper à ce sujet.

Interpolation FFT

Je vais lancer celui-ci même s'il n'est pas très courant (bien sûr, je ne pense pas que le maintien zéro soit commun non plus). Ce fil discute du rééchantillonnage FFT, où le rééchantillonnage est à la fois interpolation et décimation.

Maintien d'ordre supérieur

Les interpolateurs de maintien de second ordre sont généralement appelés «interpolateurs quadratiques». Ils sont non linéaires et ne peuvent donc pas être mis en œuvre en tant que filtres FIR, qui sont linéaires. Je ne comprends pas bien les mathématiques derrière eux, donc je ne discuterai pas de leurs performances. Je dirai cependant que je pense qu'ils sont quelque peu courants en dehors du traitement du signal.

Des méthodes d'ordre supérieur (trois ou plus) existent également. Celles-ci sont appelées "régressions polynomiales".

ÉDITER:

Filtres en peigne intégrateur en cascade (CIC)

J'ai oublié de mentionner CIC Filters . Les filtres CIC sont utilisés pour deux raisons: ils n'utilisent que des additionneurs / soustracteurs (ce n'est pas si grave maintenant que les multiplications sont rapides et bon marché), et ils peuvent faire des changements de taux d'échantillonnage très importants assez efficacement. Leur inconvénient est qu'ils sont essentiellement une mise en œuvre efficace d'un filtre rectangle en cascade, ils ont donc tous les inconvénients des filtres rectangulaires comme discuté ci-dessus. Les interpolateurs CIC sont presque toujours précédés d'un filtre FIR compensateur qui distord le signal pour annuler la distorsion introduite par le CIC. Si le changement de fréquence d'échantillonnage est suffisamment important, le coût du filtre de pré-distorsion en vaut la peine.


Fantastique enquête M. Jim. Pour ajouter à votre catégorie d'ordre supérieur, je pense que cela est également appelé «régression polynomiale». En cela, étant donné un ensemble spécifique de points, nous calculons une ligne, une parabole, un polynôme cubique d'ordre supérieur de meilleur ajustement. Une fois que nous avons l'équation, nous pouvons facilement déterminer quels sont les points intermédiaires.
Spacey

Questions: 1) Je ne suis pas tout à fait clair sur le dernier paragraphe de la partie Filtre FIR. Vous avez mentionné que les 2e et 3e sorties correspondant au 1er échantillon d'entrée utilisent des bandes de filtrage 1, 4, 7, puis 2, 5, 8. Cependant, vous mentionnez également que ce sont tous des zéros ... donc pas les 2e et 3e sorties des échantillons juste des zéros dans ce cas? 2) Ce «filtre d'interpolation FIR» ressemble-t-il à, disons, [1 0 0 3.2 0 0 -2.1 0 0 1.1 0 0] pour m = 3? (Les nombres sont composés).
Spacey

@Mohammad J'ai édité la réponse. J'espère que ça aide. Et merci pour les informations sur les régressions polynomiales.
Jim Clay

1
@endolith Deux raisons, je pense: la complexité et cela n'a de sens que lorsque la longueur du filtre dépasse un certain nombre (et je ne suis pas sûr de ce que ce nombre est). L'approche FFT fonctionne très bien lorsqu'il s'agit de blocs d'échantillons, mais si vous traitez avec un flux d'échantillons, vous devez également faire un chevauchement-ajout ou un chevauchement-sauvegarde pour maintenir la continuité.
Jim Clay

1
@endolith Une chose vraiment agréable à propos de l'approche FFT est qu'il n'y a pratiquement aucun coût à utiliser un grand filtre.
Jim Clay

3

La réponse de Jim le couvre assez bien. Toutes les méthodes de suréchantillonnage suivent le même schéma de base:

  1. Insérer des zéros entre les échantillons: il en résulte une répétition périodique du spectre d'origine mais laisse le spectre dans la bande d'origine complètement intact
  2. Filtre passe-bas pour se débarrasser de tous les spectres miroir

La principale différence entre les méthodes est la façon dont le filtrage passe-bas est implémenté. Le suréchantillonneur idéal serait d'inclure un filtre passe-bas idéal, mais ce n'est pas pratique. La prise en compte du problème dans le domaine fréquentiel permet de trouver l'algorithme de sur-échantillonnage adapté à vos besoins spécifiques:

  1. Quelle distorsion d'amplitude puis-je tolérer dans la bande d'origine? Est-ce que cela dépend de la fréquence?
  2. Est-ce que je me soucie de la phase dans le groupe original? Si vous devez maintenir la phase, vous avez besoin d'une FIR de phase linéaire. Si ce n'est pas le cas, une phase minimale permet de mieux maintenir la «causalité» et les débuts nets.
  3. De combien ai-je besoin pour supprimer les images miroir? Fondamentalement, les images miroir apparaîtront comme un bruit supplémentaire dans la bande de base.

Les interpolateurs non linéaires d'ordre élevé (spline, hermitien, Lagrange) ne fonctionnent généralement pas bien car l'erreur d'interpolation dépend fortement du signal et est presque impossible à mapper à des exigences spécifiques.


Qu'entendez-vous par «fait un meilleur travail pour maintenir la« causalité »»?
nibot

0

Lorsque l'on considère la différence entre l'échantillon et la conservation (c'est-à-dire la répétition des valeurs d'échantillon) et le remplissage nul, il est utile de réaliser (comme le soulignent Jim et Hilmar) que l'échantillon et la conservation peuvent être interprétés comme un suréchantillonnage par un remplissage nul suivi d'un Filtre FIR dont la réponse impulsionnelle est constituée d'une impulsion rectangulaire.

Par exemple, lors d'un suréchantillonnage de 2 kHz à 64 kHz (un facteur de 32), nous pouvons implémenter cela en insérant 31 zéros entre chaque paire d'échantillonnage de 2 kHz, puis en filtrant par un filtre FIR composé de 32 unités, avec toutes les autres coefficients zéro.

La prise en compte de l'échantillon et du maintien de cette manière facilite l'analyse. Nous pouvons obtenir la réponse en fréquence de l'opération d'échantillonnage et de maintien en prenant la transformée de Fourier de la fenêtre rectangulaire. Comme le souligne Jim, la transformée de Fourier d'une impulsion rectangulaire est une sincfonction à phase linéaire (puisque le rectangle n'est pas centré autour de ).τ=0

Il s'avère que cette sincfonction a ses valeurs nulles exactement aux harmoniques de la fréquence d'échantillonnage inférieure. Dans notre exemple d'application de suréchantillonnage de 2048 Hz à 65536 Hz, la réponse en fréquence de l'opération d'échantillonnage et de maintien a des valeurs nulles à 2048 Hz, 4096 Hz, etc.

entrez la description de l'image ici

De là, je conclus que tout filtre d'interpolation qui supprime totalement les harmoniques de la fréquence d'échantillonnage d'origine ressemblera à quelque chose comme "échantillonnage et maintien". Est-ce correct?

En ce qui concerne les critères de suppression de ces harmoniques, l'échantillonnage et la conservation semblent être optimaux. Cependant, ses capacités d'anticrénelage sont médiocres, car, à part les valeurs nulles harmoniques, sa réponse en fréquence ne tombe que au-dessus de l'ancien taux de Nyquist.1/f


Le problème est que les valeurs nulles sont très étroites, donc la plupart des signaux auront de l'énergie en dehors des valeurs nulles.
Jim Clay

@ JimClay, les valeurs nulles étroites ne sont-elles pas parfaites pour tuer les harmoniques de la fréquence d'échantillonnage inférieure? Je suis d'accord, vous voudriez également quelques pôles supplémentaires autour de 1 kHz afin de vous débarrasser des fréquences d'image. Je suppose que j'élargirais ma question: comment concevoir un bon filtre d'interpolation?
nibot

Vous concevez un filtre passe-bas dont la bande passante inclut la bande passante de votre signal et dont la bande d'arrêt inclut les alias introduits lorsque vous suréchantillonnez. Les fréquences entre le point 3dB du signal et l'alias sont votre bande de transition. Si votre question est "comment concevoir un filtre passe-bas?", Posez-le dans une autre question et nous pourrons en discuter.
Jim Clay

Je comprends généralement comment concevoir des filtres, généralement en plaçant explicitement des pôles et des zéros dans le domaine s, puis en les convertissant en filtres de domaine z. Je me demandais s'il y avait des astuces spéciales pour les filtres d'interpolation. Le message que je retire est qu'il n'y a pas vraiment d'astuces - les filtres d'interpolation sont comme tous les autres types de filtres, et leur conception est le choix d'un compromis entre les diverses considérations (ondulation, phase, retard de groupe, atténuation minimale de la bande d'arrêt, complexité de calcul, etc.).
nibot du

En revanche, je ne connais rien à la conception de filtres FIR.
nibot
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.