Forum: Digitale Signalverarbeitung / DSP / Machine Learning Nyquist-Shannon: Aliasing berechnen? Rechteck ohne Aliasing durch Filterung möglich


von auto (Gast)


Lesenswert?

Hallo,

Ist es überhaupt möglich aus einer naiv erzeugten Rechteckschwingung das 
Aliasing zu filtern?


Theoretisch ist das Spektrum vom Rechteck unendlich!? Und daher gibt es 
immer Aliasing? Unendlich viel?

Oder ist das Spektrum einer naiv erzeugeten Rechteckschwingung praktisch 
nicht unendlich und daher lässt sich auch das Aliasing weitgehend 
filtern?

Wie kann ich den Pegel des Aliasing-Anteils messen oder berechnen?

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Was ist denn eine naiv erzeugte Rechteckschwingung?

Fuer evtl. Rechnerei hilft evtl. das weiter:
https://de.wikipedia.org/wiki/Gibbssches_Ph%C3%A4nomen

Gruss
WK

von TEst (Gast)


Lesenswert?

Das Rechteck mit Fourier-Summenreihe bis f < nyquist synthetisieren.

von auto (Gast)


Lesenswert?

> Das Rechteck mit Fourier-Summenreihe bis f < nyquist
> synthetisieren.

Das wäre nicht naiv.

> Was ist denn eine naiv erzeugte Rechteckschwingung?

Abwechselnd 0 und 1.

Dann anschließend filtern.

Ich versuche es mal selbst:
Die Obertöne der Rechtecckschwingung sind zwar theoretisch unendlich 
viele, aber die Amplitude nimmt antiproportional, - im gleichen 
Verhältnis wie die Frequenz zur Grundschwingung ab.

Damit lässt sich also berechnen wann die Niquist-Frequenz einen 
geringeren Pegel als 60 dB hat und wie hoch der Aliasing-Anteil ist bzw. 
wie die Abtastrate und das Filter dimensioniert sein müssen um das 
Aliasing den Anforderungen entsprechend gering zu halten.

Bitte korrigiert mich wenn ich da falsch liege?
Habt Ihr eine Formel dazu?

von auto (Gast)


Lesenswert?

* ich meine -60dB

von Dergute W. (derguteweka)


Lesenswert?

Moin,

auto schrieb:
> Bitte korrigiert mich wenn ich da falsch liege?
Wuerd' ich auch so sehen.

> Habt Ihr eine Formel dazu?
So ganz grob ausm Handgelenk:
Irgendwas mit nem sin(x)/x
Dann ggf. noch ein Integral bzw. Summe ueber das Dingens eben nicht von 
-unendlich bis +unendlich sondern nur im gewuenschten Bereich.

Gruss
WK

von Prometheus (Gast)


Lesenswert?

Idealerweise legst du dein Filter so, das bei der Abtastfrequenz die 
Dämpfung so groß ist, das die Amplitude eine idealen Rauschens kleiner 
als 1LSB (oder war es ein nur halbes LSB? ) ist.

Damit ist dann dein Rechteck, nach dem Filter und unmittelbar vor der 
Abtastung bereits etwas abgerundet. Dieses Signal lässt sich jetzt 
fehlerfrei abtasten.

Bedeutet im Umkehrschluss:
1. die benötigte Dämpfung des Filters bestimmt sich aus der benötigten 
Auflösung das ADC, z.B. bei der CD waren es glaube ich 96 dB bei 16Bit.
2. Die Steilheit des Filters bestimmt sich, so, das zwischen der letzten 
Nutzfrequenz und der Abtastfrequenz die Dämpfung auch erreicht werden 
kann.

---
p.s. die ganzen SigmaDelta ADC sind auch genau wegen 2. so beliebt und 
einfach. Die tasten sehr hochfrequent ab und können damit mit einfachen 
Filtern auskommen.

von auto (Gast)


Lesenswert?

> Idealerweise legst du dein Filter so, das bei der Abtastfrequenz die
> Dämpfung so groß ist, das die Amplitude eine idealen Rauschens kleiner
> als 1LSB (oder war es ein nur halbes LSB? ) ist.

Das verstehe ich nicht wirklich, mir fehlen Grundlagen, erahne es aber:
Idealerweise heißt hier: kein Aliasing im Last Significant Bit ?

> Bedeutet im Umkehrschluss:
> 1. die benötigte Dämpfung des Filters bestimmt sich aus der benötigten
> Auflösung das ADC, z.B. bei der CD waren es glaube ich 96 dB bei 16Bit.
> 2. Die Steilheit des Filters bestimmt sich, so, das zwischen der letzten
> Nutzfrequenz und der Abtastfrequenz die Dämpfung auch erreicht werden
> kann.

Ja. Und wie berechne ich das?


Hier mein Versuch:

Eine Dämpfung von -60db entspricht einem Spannungs-Verhältnis von
1:0.001
Quelle:
http://www.sengpielaudio.com/Rechner-verstaerkung.htm

Bei einer Abtastrate von 44100 Hz liegt Niquist bei 22050 Hz

0.001 * 22050 Hz = 22,05 Hz als höchste Grundschwingung eines Rechtecks, 
welches Aliasing mit einer Dämfung von mindestens -60dB hat.

Richtig??

von auto (Gast)


Lesenswert?

> Idealerweise legst du dein Filter so, das bei der Abtastfrequenz die
> Dämpfung so groß ist, das die Amplitude eine idealen Rauschens kleiner
> als 1LSB (oder war es ein nur halbes LSB? ) ist.
>
> Damit ist dann dein Rechteck, nach dem Filter und unmittelbar vor der
> Abtastung bereits etwas abgerundet. Dieses Signal lässt sich jetzt
> fehlerfrei abtasten.
ja, das entspricht etwa 96,33 dB

Bei einer angenommen Hörgrenze von 18 kHz
und eine Abtastfrequenz von 44,1 kHz

errechne ich, dass die höchste Frequenz einer Aliasing-freien 
Rechteckschwingung 0,4 Hz entspricht.

Bei einer Samplingrate von 96 kHz, Niquist 48 kHz und einer Dämpfung von 
-60 dB bei 18 kHz
liegt das höchste saubere Rechteck bei 78 Hz.

Ernüchternd!!!

Achso, jetzt kommt ja noch das Filter! Immerhin bin ich ein Stück weiter 
...

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Das Leben ist kein Ponyhof.

Gruss
WK

von auto (Gast)


Lesenswert?

auto schrieb:
> =0,0000152590


Dergute W. schrieb:
> Das Leben ist kein Ponyhof.

Anfängerfrage (aber dafür ist das Forum auch da):

Also wenn ich die 0en und 1en mit einem steilen Filter oberhalb von z.B. 
18 Hz 'runde' höre ich kein Aliasing? Ist das richtig?
Ein Rechteck bei z.B. f0 = 8 kHz würde dann eben kein Rechteck, sondern 
ein Sinus sein, aber unterhalb der 18 kHz entsteht dann auch keine 
Aliasing-Spiegelung???

von J. S. (engineer) Benutzerseite


Lesenswert?

auto schrieb:
> Ist es überhaupt möglich aus einer naiv erzeugten Rechteckschwingung das
> Aliasing zu filtern?

Das Thema hatten wir hier doch schon mehrfach:
Beitrag "VA Oscillators mit Bandlimited Methodes (BLIT) ?"
Beitrag "Re: bandlimitierte Rechtecksignale zielgenau erzeugen"
Beitrag "Verständnisfrage Aliasing bei Audio"
Beitrag "Oszillator mit n Obertönen"

Kurzanwort:

Laut Theorie geht das mit einem -> SINC-Filter auf der dezierten 
Frequenz perfekt. Da es dieses Filter aber praktisch nicht gibt, da FIR 
nicht unendlich lang und Abtastrate nicht unendlich hoch, geht es nur 
unvollendet. Daher muss man sich mit Störungen im Stoppband abfinden.

Um das zu minimieren, wird die Abtastfrequenz hochgeschraubt. Für 
Messtechnische Zwecke mit weissem Spektrum bis zur fg mit Faktor 20, 
fürs Audio mit rosa Spektrum reicht Faktor 3-5.

Eine oberwellenarme beziehungsweise -freie Erzeugung geht mit BLIT und 
BLEP-Generatoren oder vereinfacht mit Polynom-Rechtecken, deren 
Steilheit optimiert wurde:
Beitrag "Einstellbare S-Funktion auf der Basis von Quadrierungen"

von Grummler (Gast)


Lesenswert?

auto schrieb:

> ...Niquist...

Könntest Du dem armen Harry mal die Ehre erweisen und seinen
Namen richtig schreiben?! -- Vielen Dank im Voraus.

Sein Name ist Nyquist. Harry Nyquist.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

auto schrieb:
> Anfängerfrage (aber dafür ist das Forum auch da):
Absolut.

> Also wenn ich die 0en und 1en mit einem steilen Filter oberhalb von z.B.
> 18 Hz 'runde' höre ich kein Aliasing? Ist das richtig?
> Ein Rechteck bei z.B. f0 = 8 kHz würde dann eben kein Rechteck, sondern
> ein Sinus sein, aber unterhalb der 18 kHz entsteht dann auch keine
> Aliasing-Spiegelung???

Ob du Aliasing hoerst, ist auch eine Frage des Gehoers, Erfahrung und 
Konzentration.
Und verhindern oder besser mindern kannst du Aliasing, indem du vor der 
Abtastung dein Signal entsprechend bandbegrenzt, wenn es nicht schon 
zufaellig bandbegrenzt ist. Meistens kann man das per Tiefpass, 
(manchmal auch per Bandpass) machen.
Klar, dann sieht dein Signal durch das Filter nicht mehr so aus, wie 
dein Original (also z.b. dein Rechteck ist nicht mehr sauber rechteckig, 
sondern etwas wellig und hat Ueberschwinger an den Flanken, die auch 
nicht mehr beliebig steil sind, etc.) - kann aber dafuer nach der ganzen 
Abtasterei wieder genauso hergestellt werden, wie es war (also nach der 
Bandbegrenzung)

Wenn du dein Rechteck ungefiltert abtastest, dann ist danach nicht mehr 
sichergestellt, wo genau (zwischen zwei Samplen) die Flanken des 
Rechtecks vor der Abtastung mal waren. Und das kriegst du nicht mehr 
hergestellt, weil das Theorem verletzt wurde. Daher die Filterei.

Gruss
WK

von auto (Gast)


Lesenswert?

Dergute W. schrieb:
> vor der
> Abtastung

danke, verstanden, wusste ich schon, nur nicht mehr klar gesehen.


Jürgen S. schrieb:
> Das Thema hatten wir hier doch schon mehrfach:
> Beitrag "VA Oscillators mit Bandlimited Methodes (BLIT) ?"
> Beitrag "Re: bandlimitierte Rechtecksignale zielgenau erzeugen"
> Beitrag "Verständnisfrage Aliasing bei Audio"
> Beitrag "Oszillator mit n Obertönen"

> Beitrag "Einstellbare S-Funktion auf der Basis von Quadrierungen"




Danke, schau ich mir alles an und frage eventuell nochmal nach.

(Ist Hard-Sync mit BLIT o.ä. möglich? Oder: wie ist es mit BLIT BLEP 
o.ö. möglich?)



auto schrieb:
> Damit lässt sich also berechnen wann die Niquist-Frequenz einen
> geringeren Pegel als -60 dB

An meiner Rechnung ist falsch, dass ich nur den lautesten 
reflektierenden Oberton berücksichtigt habe.

Der Pegel des Aliasings ist aber die Summe aller zurück gespiegelten 
Obertöne.

von auto (Gast)


Lesenswert?

auto schrieb:
> An meiner Rechnung ist falsch, dass ich nur den lautesten
> reflektierenden Oberton berücksichtigt habe.
>
> Der Pegel des Aliasings ist aber die Summe aller zurück gespiegelten
> Obertöne.

wenn ich
1/1+1/3+1/5+1/7...sehr viele ungerade Zahlen
rechne,
erhalte ich 8.

Also muss ich die Ergebnisse noch durch 8 teilen.

von Grummler (Gast)


Lesenswert?

auto schrieb:

> wenn ich
> 1/1+1/3+1/5+1/7...sehr viele ungerade Zahlen
> rechne,
> erhalte ich 8.

Echt?!

Wenn ich die Kehrwerte der ersten 9'216'355 ungeraden
Zahlen addiere, erhalte ich etwas mehr als 9; die 10
wird nach der 68'100'152ten ungeraden Zahl überschritten...


> Also muss ich die Ergebnisse noch durch 8 teilen.

Vielleicht doch mal etwas mit Mathematik beschäftigen,
und nicht nur rechnen...

von auto (Gast)


Lesenswert?

> Kehrwerte der ersten 9'216'355 ungeraden
> Zahlen addiere, erhalte ich etwas mehr als 9; die 10
> wird nach der 68'100'152ten ungeraden Zahl überschritten


Warum Kehrwerte? Es wird addiert und nicht multipliziert!
Könntest du das näher ausführen?

Bei meiner Rechnung komme ich mit den 32 bit float hier auf 8.

1/unendlich = 0

1/3 + 1/5 + 1/7 + ... + 1/unendlich = nähert sich der 8 an

!??


Allerdings ist das Summieren der Pergel der gespiegelten Obertöne 
vielleicht Haarspalterei, weil sie in Abständen im Spektrum verteilt 
liegen und somit auch differenziert wahrgenommen werden? Und eine 
Addition der Pegel nicht der Wahrnehmung entspricht?
Dann könnte man noch die Interferenzen, die durch Aliasing entstehen 
einbeziehen ...

von auto (Gast)


Lesenswert?

korrigiere:
>1/3 + 1/5 + 1/7 + ... + 1/unendlich = nähert sich der 8 an

1/1 + 1/3 + 1/5 + 1/7 + ... + 1/unendlich = nähert sich der 8 an

von Dergute W. (derguteweka)


Lesenswert?

Moin,

auto schrieb:
> Bei meiner Rechnung komme ich mit den 32 bit float hier auf 8.

Ha - wer bietet mehr?
1
#include <math.h>
2
#include <stdio.h>
3
4
int main() {
5
    unsigned int i;
6
    double s=0.0;
7
8
    for (i = 1;i < 0xfffffff0; i+= 2) {
9
    s += 1.0/(double)i;
10
    }
11
    printf("%g\n",s);
12
    return 0;
13
}
Kommt bei mir schonmal 11.7255, also etwas mehr als 8 raus ;-)
Ich koennt mir vorstellen, dass das ueberhaupt nicht konvergiert...

Gruss
WK

von auto (Gast)


Lesenswert?

Danke für die Klarstellung.
1/unendlich ist nicht definiert, nähert sich der Null an,
und daher stimmt wohl:
> dass das ueberhaupt nicht konvergiert...

Mit einer begrenzten Auflösung kommt hier wohl der Last Significant Bit 
wieder ins Spiel.

von Grummler (Gast)


Lesenswert?

Dergute W. schrieb:

> auto schrieb:
>> Bei meiner Rechnung komme ich mit den 32 bit float
>> hier auf 8.
>
> Ha - wer bietet mehr?

9 und 10 hatte ich schon vorgelegt; dann hatte ich keine
Lust mehr zu warten... :)


> Ich koennt mir vorstellen, dass das ueberhaupt nicht
> konvergiert...

Gehe ich von aus.

Die harmonische Reihe divergiert; ich vermute (!), dass
eine ähnliche Abschätzung, wie sie für diesen Beweis
verwendet wird, auch für unseren Fall funktioniert.

So lange die Partialsumme kleiner/gleich 10.0 ist, gilt
jedenfalls, dass die Partialsumme um 0.5 größer wird, wenn
man die Anzahl der Summanden etwa verdreifacht. Da aber
abzählbar viele ungerade Zahlen zur Verfügung stehen, kann
man die Anzahl der Summanden SEHR OFT verdreifachen... :)
Kein Beweis; nur eine numerische Beobachtung.

von J. S. (engineer) Benutzerseite


Lesenswert?

Grummler schrieb:
> Die harmonische Reihe divergiert; ich vermute (!), dass
> eine ähnliche Abschätzung, wie sie für diesen Beweis
> verwendet wird, auch für unseren Fall funktioniert.

Das lässt sich nach dem Satz von "Hospital" berechnen. Den 
Oberwellenanteil konkret zur Rechteck hatte ich hier aber schon mal 
näher ausgeführt: Für eine 1kHz waren etwa 40% der Energie im Unhörbaren 
-> Aliasproblem bei 44kHz.

von auto (Gast)


Lesenswert?

Jürgen S. schrieb:
> Den
> Oberwellenanteil konkret zur Rechteck hatte ich hier aber schon mal
> näher ausgeführt: Für eine 1kHz waren etwa 40% der Energie im Unhörbaren



Da verrätst du nur leider auch nicht, wie du das berechnest ?

Beitrag "Re: VA-Ozillatoren mit bandlimitierenden Methoden (BLIT) ?"

von mIstA (Gast)


Lesenswert?

auto schrieb:
> 2^16−(2^16−1)=0,0000152590

Also Mathe gehört offenbar nicht so ganz zu Deinen Stärken, oder? Wo 
sollen da bitte die Nachkommastellen herkommen?

Mal davon abgesehen, daß sich das Ergebnis ganz simpel und ohne wirklich 
rechnen zu müssen im Kopf ermitteln läßt:
Du hast links ausschließlich ganze Zahlen und Strich-Rechnungen; damit 
muß das Ergebnis selbst auch ganzzahlig sein.

von auto (Gast)


Lesenswert?

LSB bei 16 Bit
(1^16)/((1^16)-1)=1,0000152590

Danke nochmal an alle Beitragenden
und hoffnungsvolle Grüße an Jürgen S., du scheinst die Formel zu kennen, 
mit der sich Energie oder Pegel des Aliasings berechnet?

von J. S. (engineer) Benutzerseite


Lesenswert?

auto schrieb:
> Da verrätst du nur leider auch nicht, wie du das berechnest ?

Die Ausführungen zu dem Thema "Rechteckoberwellen" sind weiter unten:
Beitrag "Re: VA Oscillators mit Bandlimited Methodes (BLIT) ?"

Da wird resummiert, welche Anteile des Oberwellenspektrums bei der 
gewählten Abtastfrequenz wieder ins hörbare Spektrum hineinlappen. Das 
ist im allgemeinen Fall von der Frequenz und der Abtastfrequenz 
abhängig. Auszurechnen wäre das an einem konkreten Beispiel durch die 
Oberwellen des Rechtecks, die durch Fourier gegeben sind. Also z.B. bei 
einem sehr tiefen Bass von 16,67Hz mit der dritte, der fünfte u.s.w 
Oberwelle mit den Faktoren 1/3, 1/5 ...

Das geht in dem Fall bis zu - sagen wir - 16,6 kHz, was 500 ungeraden 
Oberwellen entspricht. Die letzte wäre Frequenz 1001 x 16,67 und hätte 
noch 1/1000 Wirkung.

In Summe sind das ausgehend von 100% Grundwelle bis 1kHz rund 170%. Ein 
solcher Bass besteht also aus 1/2.7 = 35% Grundwelle und überwiegend 
Oberwellen.

Noch weiter darüber summiert es bis zu einem Faktor 3. Heisst: 75% der 
Wellenenergie liegt im hörbaren Oberwellenspektrum - 25% sind 
Sinusgrundwelle.

Bis Nyqust 24kHz sind es 3,27.  Darüber, bis zu 48kHz sind die 
Spiegelfrequenzen nach unten: Die machen in Summe 0,35 aus. Dann geht es 
wieder nach oben und so weiter. Rechnet man das bis 200 kHz sind es 
1,05.

Wenn man also annimmt, dass ein analog-elektronisch erzeugtes 
Audio-Rechteck (um das geht es in dem gelinkten Beitrag) irgendwo bei 
200kHz durch die Schaltung bandbegrenzt ist, liegt im Signal dieselbe 
Menge dessen an Alias-Oberwellen drin, was an Grundwelle drin ist. Hinzu 
kommen die 300% korrekten Oberwellen.

So ein Bassrechteck hätte also 4/5 echten Signalanteil, davon 1/5 
Grundwelle , 3/5 Oberwellen und 1/5 Alias.  Daher braucht man die dort 
erwähnte hohe Abtastfrequenz um das zu transportieren - oder eben den 
klassischen Filter, um das zu reduzieren. Ideal wäre natürlich 3/4 
Oberwelllen, 1/4 Grundwelle, 0 Alias.

Beim 1kHz-Referenzrechteck sind es 100% Grundwelle, 238% Oberwellen bis 
Nyquist und 106% Alias, also in Relation sogar noch "schlimmer": fast 
30% der Oberwellen würden gespiegelt. Da sich auch mit dem besten 
Filter, die Oberwellen im Stoppband nicht völlig beiseitigen lassen, 
kriegt man immer Alias und in der Musik sind wenige % direkt zu hören, 
weil es völlig andere und unpassende Töne sind.

von -gb- (Gast)


Lesenswert?

Dergute W. schrieb:
> Kommt bei mir schonmal 11.7255, also etwas mehr als 8 raus ;-)
> Ich koennt mir vorstellen, dass das ueberhaupt nicht konvergiert...

Das lässt sich berechnen, denke ich. War das nicht etwas mit 
Logarithmus?

Aufsummiert konvergiert es bei 1/100.000 gerade mal gegen 6.5.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.