Wenn eine lineare Phase erforderlich ist, werden Sie wahrscheinlich zu einer FIR-Implementierung geleitet. Es ist möglich, IIR-Filter mit einer ungefähren linearen Phase zu erstellen, aber es ist einfach, eine FIR mit linearer Phase zu entwerfen.
Wenn Sie sich Sorgen über die Latenz machen, ist das Vorwärts-Rückwärts-Filtern wie in filtfilt
keine gute Option. Im Allgemeinen ist es eigentlich als Offline-Prozess gedacht, da Sie zur genauen Implementierung der Technik das gesamte Signal vorwärts und dann rückwärts durchlaufen müssen. Dies bedeutet, dass Sie auf einmal auf das gesamte Signal zugreifen können, was nicht mit einer geringen Verzögerung angemessen ist.
Im Allgemeinen erfordert ein FIR-Filter eine höhere Ordnung für einen bestimmten Satz von Leistungsanforderungen. FIR-Filter bieten jedoch einige echte Vorteile, wie z. B. garantierte Stabilität, geringere Anfälligkeit für Rundungsfehler (da der Quantisierungsfehler nicht durch den Filter zurückgemeldet wird, obwohl Sie dies mit einer erhöhten Komplexität kompensieren können ) und sind einfach zu erreichen lineare Phasenantwort. Darüber hinaus sind für viele Prozessorarchitekturen effiziente FIR-Filterimplementierungen verfügbar, wodurch die Kosten für die zusätzlichen Abgriffe etwas gesenkt werden.
Eine andere Möglichkeit, die zusätzlichen Kosten für FIR-Filter in Ihrer Situation zu verringern, besteht darin, effiziente Multirate-Signalverarbeitungstechniken zu nutzen. Insbesondere können Sie einen mehrphasigen Dezimierungsansatz verwenden , um die Anzahl der Berechnungen, die Sie beim Dezimieren Ihres Signals ausführen, erheblich zu reduzieren. Dies hat den Effekt, dass die Anzahl der effektiven Abgriffe (in Bezug auf die Rechenkomplexität) im Dezimationsfilter verringert wird. Wenn Sie außerdem um einen großen Faktor dezimieren müssen, können mehrstufige Ansätze dazu beitragen, Ihre Last weiter zu reduzieren. Lyons DSP-Einführungsbuch enthält einige gute, leicht zu lesende Materialien zu diesen Themen.
Angesichts spezifischerer Parameter Ihres Systems könnte man gezieltere Empfehlungen aussprechen. Was sind Ihre Anforderungen an das Filterdesign? Welche Rechenfunktionen verfügt Ihre Plattform? Auf welche Abtastrate werden Sie dezimieren?
Wie niedrig ist mit "geringer Latenz" gemeint?
Wenn Sie unter 1 mS mit einer großen Reduzierung der Abtastrate meinen, ist möglicherweise eine minimale Phase FIR erforderlich. Wenn Sie eine 1/30 Sekunde meinen, können Sie möglicherweise sogar ein effizientes FIR-Filter mit linearer Phase mithilfe eines FFT-Überlappungs-Add / Save-Ansatzes (schnelle Faltung) implementieren.
quelle
Ein kleines Problem in Bezug auf die Zeitkomplexität: FIR-Filter sind vektorisierbar, was in modernen CPU-Architekturen sehr hilfreich ist. Darüber hinaus erleiden IIR-Filter einen Leistungseinbruch, da der aktuelle Ausgabewert von früheren Ausgabewerten abhängt, wodurch der Vorteil des Pipelining beseitigt wird.
quelle