Zitat:Nach meinen Verständnis wäre es (fast) egal wo die Nullen dranhängen, solange es Nullen sind. Abschneiden wäre ganz schlecht, weil das einem Rechteckfenster entspräche, mit den entsprechenden negativen Effekten.
Unterschiedliche Delays hat man bei unterschiedlichen Filterlängen, denn das Delay (Gesamtverzögerung) setzt sich ja aus 2x Partitionsgrösse + "Verzögerung bis zur Spitze der Filterdatei" zusammen. Das bei Elmar die gleiche Länge bei Eingang/Ausgang rauskommt, finde ich seltsam.
Nimmt man mal eine "ungewöhnliche" Filterdatei, d.h. eine mit einem Impuls am Anfang und "irgendwas" (also z.B. noch eine Spitze) am Ende, so hört man ein Echo (also z.B. zwei Impulse). Man kann die beiden Signale (Eingang/Filter) ja auch vertauschen, also den Eingang zur Filterdatei machen, und die Filterdatei da durch "jagen". Das Ergebnis muss ja das Gleiche sein, so wie 2+4 = 4+2 ist.
Nimmt man als Eingangssignal ein Rauschen und filtert es mit einem Filter der die besagten 2 Spitzen (Anfang/Ende) hat, ergibt sich natürlich etwas, das länger ist als der Eingang.
Soweit bin ich einverstanden: Faltung ist komplett kommutativ, assoziativ, distributiv.
f*g=g*f
Vertauschen von Signal und Filter ist also absolut unproblematisch.
Die Länge des Ergebnisses der diskreten Faltung ist immer(!) gleich der Summe der Längen beider Signale zusammen -1. Das hat also nicht damit etwas zu tun ob man ein Filter mit 2 Impulsen hat sondern ist immer so.
Das man in einem solchen Fall ein Echo hat liegt daran, dass bei der Faltung von "etwas" mit einem Impuls das "etwas" an die Stelle des Impulses verschoben wird. Da wir im Zeitbereich Falten entspricht das einer zeitlichen Verzögerung, denn ein Impuls am Anfang lässt das Eingangssignal sofort und ohne Verzögerung durch, während der Impuls am Ende des Filters das Eingangssignal nochmals wiedergibt. Echos in einer Kirche kommen daher, da das wiedergegebene (Sprache, Musik) mit der Raumimpulsantwort, welche viele Nebenimpulse hat, im Zeitbereich gefaltet wird bevor es an unser Ohr kommt.
Zu dem Rest den du geschrieben hast: jein
Das Ergebnis hat immer die Länge beider Signale zusammen -1.
Wenn man 2 linearphasige Filter miteinander Faltet ist das Ergebnis auch stets linearphasig da der Impuls immer passend für die neue Gesamtlänge des Filters verschoben wird.
Bevor man eine FFT für solche Zwecke von Filter/Signal macht, zero padded man die Signale auf die Länge des zu erwartenden Ergebnis: L+M-1 da sonst Informationen verloren gehen würden.
Zitat:Für mich ist die Diskussion zu hoch
, aber wenn ich mir vorstelle eine WAV-Datei zu offline zu falten, um sie z.B im Auto wiederzugeben, dann darf die Datei ja auch nicht länger werden als vorher; sie muss "nur" verändert werden.
Sie ist aber länger wenn eine ganz normale Faltungsoperation darauf angewendet wurde. Und das ist einzig und alleine davon abhängig wie Lange das Filter war. Das merkt man aber vielleicht garnicht, da z.B. ein 65k samples langes Filter bei einer Abtastrate von 44,1kHz für gerade mal etwas über 1s an Verlängerung verursacht.
Zitat:Eine ergänzende Idee hätte ich allerdings noch. Ein Grund dass die Ausgabedatei nicht länger ist als die Eingangsdatei könnte sein, dass BruteFIR die zusätzlichen Koeffizienten zwar berechnet, aber noch nicht ausgibt, da es auf weitere Eingaben wartet.
Ich glaube da könntest du Recht haben! Nachdem das erste Segment gefaltet wurde, werden die letzten M-1 samples abgeschnitten und abgespeichert. Das beschnittene Faltungsergebnis hat dann wieder die Länge der Buffer/des ursprünglichen Signals und wird nachdem es mit einem vorherig abgespeicherten Signalstücken (oder 0en falls es das erste ist) aufaddiert wird direkt ausgegeben. Das neuste abgespeicherte Signalstückchen wird dann auch wieder auf das nächste Faltungsergebnis am anfang aufaddiert um Ausschwingeffekte zu kompensieren.
Wie man Brutefir jetzt dazu bewegen könnte die letzten samples noch mit auszugeben ist jetzt fraglich. Theoretisch sollte es reichen die Filterlänge auf die nächste 2er Potenz einzustellen, da er eigentlich zero padden sollte - könnte man ja mal testen.
Wie man von minimum Delay auf linear Phase kommt weiß ich jetzt ehrlich gesagt nicht - nur umgekehrt. Normalerweise kommt man einfacher auf die linearphasigen Filter. Hier macht man am besten einfach die inverse Fouriertransformation vom Korrekturamplitudengang und hat direkt den linearphasigen Filterimpuls (evtl noch ein Fenster drüber).
[SIZE="1"]I'm not insane... my mother had me tested - Sheldon Cooper[/SIZE]