Gibt es eine bandbegrenzte nichtlineare Verzerrung?

12

Wenn Sie also eine Rechteckwelle erzeugen, indem Sie einfach ein Signal an den Sample-Grenzen zwischen zwei Werten umschalten, wird eine unendliche Reihe von Harmonischen erzeugt, die Töne unter Ihrer Grundwelle erzeugen, was sehr gut hörbar ist. Die Lösung ist die bandbegrenzte Synthese , entweder durch additive Synthese oder bandbegrenzte Schritte, um Wellenformen zu erzeugen, die so aussehen, als hätten Sie die ideale mathematische Rechteckwelle vor dem Abtasten bandbegrenzt:

http://flic.kr/p/83JMjT

Bildbeschreibung hier eingeben

Aber ich habe gerade festgestellt, dass, wenn Sie eine digitale Sinuswelle stark verstärken und dann digital abschneiden, sie die gleiche Rechteckwellenform erzeugt, ohne dass das Gibbs-Phänomen Wellen erzeugt. Es produziert also auch verzerrte Verzerrungsprodukte, richtig? So jede nichtlineare Verzerrung in der digitalen Domäne , die Harmonischen außerhalb der Nyquist - Grenzen erzeugt wird aliased Verzerrungsprodukte produzieren? (Edit: Ich habe einige Tests durchgeführt und bestätigt, dass dieser Teil wahr ist.)

Gibt es eine bandbegrenzte Verzerrung, um (im digitalen Bereich) die Auswirkungen der Verzerrung (im analogen Bereich) vor der Bandbegrenzung und Abtastung zu simulieren ? Wenn ja, wie machst du das? Wenn ich nach "bandbegrenzter Verzerrung" suche, finde ich einige Verweise auf Chebyshev-Polynome, aber ich weiß nicht, wie ich sie verwenden soll oder ob sie nur für Sinuswellen funktionieren oder was:

Dieses Instrument versucht nicht, bandbegrenzte Verzerrungen zu erzeugen. Diejenigen, die an bandbegrenzter Verzerrung interessiert sind, sollten die Verwendung von Chebyshev-Polynomen untersuchen, um den Effekt zu erzeugen. Hyperbolische Tangentenverzerrung

 

"Chebyshev Polynomial" - Formgebungsfunktionen mit der wichtigen Eigenschaft, dass sie intrinsisch bandbegrenzt sind, dh keine störenden spektralen Harmonischen aufgrund von Überlappungen usw. einführen. Wave Shaper

Endolith
quelle
Ich bin nicht sicher, was Sie fragen. Wenn Sie eine Operation ausführen, die die Generierung von Frequenzinhalten außerhalb der Nyquist-Region bewirkt, in der Sie tätig sind, wird ein Aliasing angezeigt, unabhängig davon, wie Sie diese Inhalte generiert haben. Welche Art von analoger Verzerrung versuchen Sie zu simulieren? Ein Ansatz könnte darin bestehen, das Signal zuerst auf eine ausreichend hohe Abtastrate hochzusampeln und dann die breitere Nyquist-Region zu verwenden, um Ihre Signalverarbeitung durchzuführen. Sie können dann auf den ursprünglichen Wert zurücksampeln, nachdem Sie fertig sind.
Jason R
@JasonR: Ja, um Rechteckwellen zu erzeugen, können Sie entweder eine wirklich bandbegrenzte Methode wie die additive Synthese anwenden, oder Sie können eine Approximation durchführen, indem Sie zuerst ein Upsampling durchführen, die Rechteckwelle auf naive Weise erzeugen und dann ein Downsampling durchführen (es wird jedoch immer noch eine geben) etwas Aliasing, nur auf einer niedrigeren Ebene). Ebenso können Sie die Verzerrung, wie Sie bereits gesagt haben, durch Upsampling approximieren. Gibt es jedoch eine Möglichkeit, sie analog zur additiven Synthesemethode für die Erzeugung von Rechtecken ohne Aliasing direkt zu generieren?
Endolith
@JasonR: Ich frage allgemein nach nichtlinearen Verzerrungen, aber so etwas wie die Emulation der Verzerrungsschaltung eines analogen Gitarrenverstärkers wäre ein gutes Beispiel. Wenn ich das richtig verstanden, es naiv in der digitalen Domäne tun würde Verzerrungsprodukte erzeugen, die nicht existieren , wenn es in der analogen Domäne verzerrt, erniedrigen , von denen einige möglicherweise deutlich hörbar bei Frequenzen als die Grund usw.
Endolithe
2
@ Endolith Chebyshev Polynome können sein, was Sie wollen.
Datageist
@datageist: Können Sie eine Antwort auf die Verwendung von Chebyshev-Polynomen schreiben? Sogar eine kurze.
Endolith

Antworten:

5

Das Anwenden einer nichtlinearen Funktion führt immer zu Harmonischen, und das Mischen von nichtlinearen Funktionen mit abgetasteten Versionen von kontinuierlichen Signalen fügt die oben notierte Falte hinzu (wobei Harmonische hoher Frequenzen auf niedrige Frequenzen abgeglichen werden).

Ich kann mir ein paar Vorgehensweisen vorstellen:

  1. Sie können einen Überabtastungsfaktor verwenden, der hoch genug ist, um die zusätzlichen Harmonischen zu erfassen (bis zu einer willkürlichen Genauigkeit, z. B. Ihrem Grundrauschen).
  2. Sie können eine "weichere" Clipping-Funktion verwenden (siehe z. B. hier ), deren Obertöne früher aussterben als die der harten Clipper. Dies ist einfacher zu modellieren, führt jedoch bei niedrigen Frequenzen zu einer eigenen Verzerrung.
  3. Aufbauend auf dem oben vorgeschlagenen Ansatz interpolieren Sie Ihr abgetastetes Signal (z. B. mit einem Lagrange- oder Chebyshev-Interpolator), um ein zeitkontinuierliches Modell zu erstellen. Wenden Sie dann den Hard Clipper und den Tiefpass in einem simulierten zeitkontinuierlichen Bereich an. Probieren Sie das Ergebnis.

Sie können (1) und (2) kombinieren. Der dritte Ansatz ist komplex, gibt Ihnen jedoch die beste Kontrolle darüber, wie viel Verzerrung zuzugeben ist, und lässt sich wahrscheinlich besser auf Anforderungen mit sehr hoher Wiedergabetreue skalieren.

Bei nichtlinearen Funktionen, die eine Reihenentwicklung zulassen (z. B. Taylor / Maclaurin), können Sie eine gute Vorstellung davon bekommen, wie schnell die Harmonischen abklingen. Die Maclaurin-Erweiterung einer Funktion ist:f(x)

f(x)=n=0[f(n)(0)n!xn]

In Ihrem Fall ist die Beschneidungsfunktion. (Mit einem harten Clipper ist das nicht möglich, zumindest nicht naiv!) Wenn Sie die Substitution x = g ( t ) betrachten , wobei g ( t ) Ihr Eingangssignal ist, wird x n zu g ( t ) n , was du als n- malige Faltung deines Eingangssignals mit sich selbst betrachten kannst . Somit hat für Tiefpasssignale der n- te Term der unendlichen Summation eine Bandbreite nf(x)x=g(t)g(t)xng(t)nnnnmal das deines Signals. Um das Bild zu vervollständigen, müssen Sie die Amplitude jedes Terms ermitteln und entscheiden, wie viele Terme in der Summation relevant sind.

(Mit ein wenig Überlegung können Sie dieses Formular möglicherweise auch direkt verwenden, um die gefilterte Nichtlinearität zu approximieren. Dies würde eine gute Seriendarstellung für den Clipper erfordern.)

Graeme
quelle
Um zu verdeutlichen, ist # 3 nicht nur eine Überabtastung mit Interpolation, sondern es werden Parameter eines kontinuierlichen Chebyshev-Polynoms gefunden, das zu den abgetasteten Punkten passt, und dann mit diesen Parametern und einem Modell des Polynoms gearbeitet.
Endolith
1
Ich stelle mir eine Folge von Polynominterpolatoren vor, die jeweils für einen kurzen Bereich von Abtastwerten aktiv sind. Wenn also eine Reihe neuer Stichproben eingeht, erstellen Sie einen Interpolator, der nur in einem definierten Intervall aktiv ist. Ihre zeitkontinuierliche Annäherung an das abgetastete Signal besteht aus diesen Polynomen. (Ich denke, Lagrange, aber Chebyshev ist wahrscheinlich dasselbe. Ich erinnere mich nicht, ob Chebyshev-Interpolatoren genau mit den Abtastpunkten übereinstimmen. Wenn nicht, würden Sie Diskontinuitäten beim Umschalten zwischen Interpolatoren erhalten.)
Graeme
4

Einige Ansätze zur aliasfreien nichtlinearen Verzerrung (in aufsteigender Reihenfolge des Schwierigkeitsgrades):

  1. Subband-Verzerrung : Verwenden Sie einen Tiefpassfilter, um das untere Ende des Signals zu extrahieren. Wenn Sie eine Grenzfrequenz von f s wählen Sie können jede nichtlineare Übertragungsfunktionfanwenden,wobei Ableitungen abfN+1verschwinden, um ein Aliasing zu vermeiden. Addieren Sie nur den Verzerrungsausgang des niedrigen Bandes zum ursprünglichen Signal. Ändern Sie dazu Ihre nichtlineare Übertragungsfunktion so, dass nur die Verzerrung und nicht das eingehende Signal erzeugt wird. Dieser Ansatz ist für Audio oftmals völlig ausreichend, da der Verzerrungsbeitrag der höheren Frequenzen in den meisten Fällen unhörbar wäre.fs2NffN+1

  2. Überabtastung : Dies ist ähnlich wie bei Ansatz 1, erfordert jedoch die zusätzlichen Schritte der Über- und Unterabtastung, um sicherzustellen, dass alle Informationen im ursprünglichen Signalband zum verzerrten Signal beitragen, wenn Sie dies für erforderlich halten. Hiermit können Sie auch zu einer höheren Ordnung verzerren, da Teile des rückgefalteten Spektrums vom Downsampling-Filter entfernt werden. Das heißt, wenn Sie um einen Faktor überabtasten, müssen die Ableitungen der nichtlinearen Übertragungsfunktion ab Ordnung 2 N verschwinden. Das Verfahren ist ein einfaches Upsampling unter Anwendung der nichtlinearen Übertragungsfunktion Downsampling.N2N

  3. Verwendung einer lokalen Analyselösung : Jede glatte nichtlineare Übertragungsfunktion kann auf ein Signal angewendet werden, das durch eine Potenzreihe beschrieben wird. Wenn Sie die Übertragungsfunktion auf eine Potenzreihe einwirken lassen, erhalten Sie eine Potenzreihe zurück. Wenn Sie sich auf abgeschnittene Potenzreihen einer bestimmten Größenordnung und die Übertragungsfunktion auf einen bestimmten Grad an Glätte beschränken, können Sie die Übertragungsfunktion als Map auf die Koeffizienten der abgeschnittenen Reihen schreiben. Das heißt, Sie betrachtenanstelle von f : R NR M, indem Sie eine Eingangsserienerweiterung der Länge N in eine Ausgangsserienerweiterung der Länge M umwandelnf:RRf:RNRMN . Mit diesem Verständnis können Sie eine lokale endliche Approximation des Eingangssignals in Bezug auf eine Leistungsreihe verwenden und diese auf eine Leistungsreihen-Approximation des Ausgangs abbilden. Anschließend können Sie die Ausgabereihen analytisch integrieren, um einen Box-Car-Antialiasing-Filter zu erstellen, mit dem der Ausgabebeispielwert ermittelt wird. Alle diese Berechnungen können symbolisch durchgeführt werden. Da Sie lokale Merkmale des Eingangssignals einbeziehen müssen, erhalten Sie schließlich einen nichtlinearen Filter, der frühere Werte Ihres Eingangssignals verwendet, um die aktuelle Ausgabe zu generieren.M>N

  4. Algebraisches Design auf der Basis von Abhängigkeiten : Im vorherigen Artikel haben Sie gesehen, dass nichtlineare Verzerrungen durch Antialiasing zu nichtlinearen Filtern führen. Natürlich sind nicht alle nichtlinearen Filter aliasfrei, aber einige können es sein. Die naheliegende Frage ist also, nach welchem ​​Kriterium ein solcher Filter streng aliasfrei ist und wie er zu gestalten ist. Wie sich herausstellt, ist eine äquivalente Aussage zum Freiwerden von Aliasing, dass der nichtlineare Filter mit Unterabtastungsübersetzungen pendelt. Sie müssen also sicherstellen, dass es keinen Unterschied macht, ob Sie zuerst übersetzen und dann filtern oder erst filtern und dann übersetzen. Diese Bedingung führt zu sehr strengen Entwurfsbeschränkungenfür nichtlineare Filter, hängt aber davon ab, wie Sie die Signalumsetzung realisieren. Zum Beispiel würde die ideale Übersetzung unendlich viele Koeffizienten für das nichtlineare Filter erfordern. Sie müssen also die Signalumsetzung auf endliche Ordnung approximieren, um ein endliches nichtlineares Filter zu erhalten. Die Alias-Freiheit skaliert mit der von Ihnen verwendeten Näherung, aber Sie haben sehr gute Kontrolle darüber. Nachdem Sie die Mathematik dieses Ansatzes durchgearbeitet haben, können Sie jede (nicht nur glatte) nichtlineare Übertragungsfunktion als nahezu ideales digitales Modell in Form eines nichtlinearen Filters entwerfen. Ich kann die Details hier unmöglich skizzieren, aber vielleicht können Sie sich von dieser Beschreibung inspirieren lassen.

Jazzmaniac
quelle
y[t]=x[t]k
Oder eine andere (möglicherweise verwandte) Frage: Wenn Sie sich für den von Ihnen erwähnten lokalen endlichen Ansatz entscheiden, erhalten Sie eine Karte von abgeschnittenen Potenzreihen zu abgeschnittenen Potenzreihen. Wenn Sie dann versuchen, die abgeschnittene Potenzreihe, die normalerweise mit einer sinc-Funktion verknüpft ist, zu unterbinden, erhalten Sie einen einfachen Ausdruck für das Ergebnis? Kann das Ergebnis erneut als abgeschnittene Potenzreihe ausgedrückt werden, und wenn ja, wie sieht es aus?
Mike Battaglia
1
@MikeBattaglia, vielleicht kannst du eine neue Frage erstellen, damit ich dort eine gründliche Antwort geben kann. Zur Beantwortung Ihrer zweiten Frage verwenden Sie keinen SINC-Kernel, sondern im einfachsten Fall einen Boxcar-Kernel. Kernel höherer Ordnung funktionieren, aber um ein Analyseergebnis zu erhalten, müssen Sie sich auf bestimmte Kernel beschränken.
Jazzmaniac
Thanks - hat hier eine neue Frage für die Filterdesign-Frage erstellt: dsp.stackexchange.com/q/51533/18276
Mike Battaglia
2

Tn(x)=cos(narccos(x)).

Tn(x)

(1)Tn(cos(kx))=cos(narccos(cos(kx)))=cos(nkx).

Die Polynome selbst können mithilfe der folgenden Wiederholungsrelation auf einfache Weise generiert werden :

T0(x)=1T1(x)=xTn(x)=2xTn1(x)Tn2(x).

Hier sind die ersten:

T0(x)=1T1(x)=xT2(x)=2x(x1)=2x21T3(x)=2x(2x21)x=4x33xT4(x)=2x(4x33x)(2x21)=8x48x2+1

(1)T2cos(x)

2cos2(x)1=2(eix+eix2)21=24(ei2x+2eixeix+ei2x)1=(ei2x+ei2x2)+221=cos(2x).

By computing a Chebyshev Series

f(x)=n=0anTn(x)

truncated to an appropriate value of n, you get a waveshaper (i.e. f(x)) that, when applied to a unit amplitude cosine, will generate an arbitrary [integer] set of bandlimited harmonics.

datageist
quelle
Thanks! For waveforms other than a single sinusoid, what happens? Bandlimited intermodulation or not?
endolith
1
Yeah, you get intermodulation, but it is bandlimited. For most full-bandwidth audio, that just means you know the oversampling factor you need to use. And it will be true of all polynomial waveshapers up to xn.
datageist
1

@robert-bristow-johnson explains this very clearly on comp.dsp:

you have to oversample to a finite extent. if you represent the (memoryless, i assume) non-linearity as a finite order polynomial (that approximates whatever curve you are trying to implement), then whatever is the order of polynomial is the same factor of oversampling needed and no aliases will occur. then low-pass filter (at that oversampled rate) to get rid of all frequency components higher than your original Nyquist, then downsample and you will not have aliasing.

In other words, if your nonlinearity is a polynomial, the highest frequency that can be produced by the distortion will be the highest frequency in your signal times the order N of the polynomial. (The polynomial nonlinearity is multiplying the signal by itself N times, so its spectrum gets convolved with itself and spreads out by the same ratio.)

So then you know the maximum frequency (whether Nyquist or some lower limit for your application), and you know the order of the polynomial, so you can oversample enough to prevent aliasing, do the distortion, and then low-pass filter and downsample.

In fact, you can reduce the oversampling rate by letting some aliasing happen, as long as it's contained in the band that will be removed before downsampling:

another little trick is that you need not care about aliasing that folds down to the area that you'll LPF out. so a 5th order polynomial needs only to have an oversampling ratio of 3. those top 2 harmonics might alias, but won't get back into the baseband. when downsampling, you filter those aliased harmonics out. so i think the hard and fast rule is

oversampling ratio = (polynomial order + 1)/2

endolith
quelle
2
i seem to have overstated the oversampling requirement is a little in that post. you can allow some foldover of harmonics as long as the aliased harmonics don't make it back down to the original baseband. that means, if the order of the polynomial representing the memoryless non-linearity is N, all you need to oversample by is a factor of N+12. e.g. if you oversample by a factor of 4 (like upsample to 192 kHz), you can apply a 7th order polynomial, filter out (at fs=192 kHz) all the crap generated above 20 kHz, and then downsample back to 48 kHz.
robert bristow-johnson
@robert I saw and added that part as you were commenting. If you rewrite this as your own answer I'll delete it and accept yours
endolith
1
oh dear. to dress up a nice answer requires work.
robert bristow-johnson
@robertbristow-johnson Well, the imaginary internet points are yours if you want them
endolith