Donc, si vous générez une onde carrée en commutant simplement un signal entre deux valeurs, aux limites de l'échantillon, cela produit une série infinie d'harmoniques, qui alias et produisent des tonalités en dessous de votre fondamentale, ce qui est très audible. La solution est la synthèse à bande limitée , utilisant soit la synthèse additive soit des étapes à bande limitée pour produire des formes d'onde qui sont les mêmes que si vous aviez à bande limitée l'onde carrée mathématique idéale avant de l'échantillonner:
Mais je viens de réaliser que si vous appliquez une grande amplification à une onde sinusoïdale numérique, puis la coupez numériquement, elle produira la même forme d'onde carrée, sans les ondulations du phénomène Gibbs. C'est donc aussi produire des produits de distorsion aliasés, non? Donc, toute distorsion non linéaire dans le domaine numérique qui produit des harmoniques en dehors des limites de Nyquist produira des produits de distorsion crénelés? (Edit: j'ai fait quelques tests et confirmé que cette partie est vraie.)
Existe-t-il une distorsion à bande limitée, pour simuler (dans le domaine numérique) les effets de la distorsion (dans le domaine analogique) avant la limitation de bande et l'échantillonnage? Si oui, comment faites-vous? Si je recherche "distorsion à bande limitée", je trouve des références aux polynômes de Chebyshev, mais je ne sais pas comment les utiliser ou s'ils ne fonctionnent que pour les ondes sinusoïdales ou quoi:
Cet instrument n'essaie pas de générer une distorsion à bande limitée. Les personnes intéressées par la distorsion à bande limitée devraient étudier l'utilisation des polynômes de Chebyshev pour générer l'effet. Distorsion tangente hyperbolique
"Polynôme de Chebyshev" - fonctions de mise en forme avec la propriété importante d'être intrinsèquement limitées dans la bande, c'est-à-dire qu'elles n'introduisent pas d'harmoniques spectrales parasites en raison du chevauchement, etc. Wave Shaper
la source
Réponses:
L'application d'une fonction non linéaire introduira toujours des harmoniques et le mélange de fonctions non linéaires avec des versions échantillonnées de signaux continus ajoute la ride que vous notez ci-dessus (où les harmoniques haute fréquence sont aliasées aux basses fréquences).
Je peux penser à quelques façons de procéder:
Vous pouvez combiner (1) et (2). La troisième approche est complexe, mais vous donne le meilleur contrôle sur la quantité de distorsion à admettre, et sera probablement mieux adaptée aux exigences de fidélité très élevées.
(Avec un peu de réflexion, vous pourriez également être en mesure d'utiliser ce formulaire directement pour approximer la non-linéarité filtrée. Cela nécessiterait une bonne représentation en série pour le clipper.)
la source
Quelques approches de la distorsion non linéaire sans alias (par ordre croissant de difficulté):
Conception algébrique basée sur des contraintes : dans l'article précédent, vous avez vu que la distorsion non linéaire d'anticrénelage conduit à des filtres non linéaires. Bien sûr, tous les filtres non linéaires ne sont pas exempts d'alias, mais certains peuvent l'être. La question évidente est donc pour un critère de rendre un tel filtre strictement sans alias et comment le concevoir. En fait, une déclaration équivalente à l'absence d'alias est que le filtre non linéaire commute avec les traductions de sous-échantillon. Vous devez donc vous assurer que cela ne fait aucune différence si vous traduisez d'abord, puis filtrez, ou filtrez d'abord, puis traduisez. Cette condition conduit à des contraintes de conception très strictespour les filtres non linéaires, mais dépend de la façon dont vous réalisez la traduction du signal. Par exemple, la translation idéale nécessiterait une infinité de coefficients pour le filtre non linéaire. Vous devez donc approximer la traduction du signal en ordre fini pour obtenir un filtre non linéaire fini. Les échelles sans alias avec l'approximation que vous utilisez, mais vous en avez un très bon contrôle. Après avoir étudié les mathématiques de cette approche, vous pouvez concevoir n'importe quelle fonction de transfert non linéaire (pas seulement lisse) comme un modèle numérique presque idéal sous la forme d'un filtre non linéaire. Je ne peux pas esquisser les détails ici, mais vous pouvez peut-être vous inspirer de cette description.
la source
Les polynômes eux-mêmes peuvent être facilement générés en utilisant la relation de récurrence suivante :
Voici les premiers:
En calculant une série Chebyshev
la source
@ robert-bristow-johnson l' explique très clairement sur comp.dsp :
En d'autres termes, si votre non-linéarité est un polynôme, la fréquence la plus élevée qui peut être produite par la distorsion sera la fréquence la plus élevée de votre signal multipliée par l'ordre N du polynôme. (La non-linéarité polynomiale multiplie le signal par lui-même N fois, de sorte que son spectre se convolutionne avec lui-même et se propage dans le même rapport.)
Donc, vous connaissez la fréquence maximale (que ce soit Nyquist ou une limite inférieure pour votre application), et vous connaissez l'ordre du polynôme, vous pouvez donc suréchantillonner suffisamment pour éviter le repliement, faire la distorsion, puis filtre passe-bas et sous-échantillonnage.
En fait, vous pouvez réduire le taux de suréchantillonnage en laissant un certain aliasing se produire, tant qu'il est contenu dans la bande qui sera supprimée avant le sous-échantillonnage:
la source