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?
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
Das Rechteck mit Fourier-Summenreihe bis f < nyquist synthetisieren.
> 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?
* ich meine -60dB
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
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.
> 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??
> 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 ...
Moin, Das Leben ist kein Ponyhof. Gruss WK
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???
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"
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.
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
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.
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.
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...
> 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 ...
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
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
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.
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.
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.
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) ?"
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.
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?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.