Filtri IIR cosa significa infinito?


11

Ho difficoltà a capire cosa significa "infinito" in IIR in pratica ... In teoria la risposta all'impulso viene utilizzata per il feedback. Se questo feedback non finisce mai come viene generato l'output?

Risposte:


18

Per rispondere a questa domanda devi sapere cosa significano "Impulso" e "Risposta" ...

Un "impulso" è un impulso semplice. Digitale sarebbe un campione con un valore massimo, mentre tutti gli altri campioni prima e dopo sarebbero zero. Se lo ascoltassi, sentiresti qualcosa come un pop o un petardo.

La "risposta" è l'uscita di un filtro (o qualcos'altro) a cui viene dato l'impulso.

Ad esempio, puoi ascoltare la "risposta all'impulso di una stanza" andando nella stanza, facendo un semplice battito di mani e ascoltando l'eco. Ci vorrebbe un po 'di pratica per rendere il battito della mano il più "acuto" possibile. Ottenere la risposta all'impulso di un filtro è allo stesso modo ma invece di un battito di mani usi un semplice impulso e invece di una stanza hai un filtro.

Se osservi la risposta all'impulso di un filtro, o di una stanza, vedrai l'output oscillare per un po 'di tempo dopo l'impulso (e talvolta anche prima). Nella stanza hai sentito questo tremolio come l'eco. In un filtro questa oscillazione è direttamente correlata alla risposta in frequenza e di fase del filtro. In una stanza, la quantità di tempo che senti l'eco è chiamata "tempo di riverbero" - non esiste un termine corrispondente per un filtro, ma fa parte della risposta all'impulso.

Ora, un filtro FIR (Finite Impulse Response) è finito perché il tempo di risposta all'impulso è limitato dalla matematica. È matematicamente impossibile che il tempo di risposta all'impulso si estenda oltre il numero di tocchi nel filtro, quindi è finito .

Un filtro IIR, d'altra parte, non ha questa limitazione matematica nel tempo di risposta all'impulso. Se viene data una precisione matematica infinita, un filtro IIR può spostare le uscite per sempre. Certo, in senso pratico non va mai avanti per sempre dato che a un certo punto le oscillazioni si riducono rispetto alla precisione della matematica usata e quindi scompare.


grazie per la bella spiegazione! Dove si svolge il feedback in IIR?
GorillaApe,

2
@Parhs: il feedback ha luogo perché l'output corrente è derivato dai precedenti valori di input e output , mentre per il filtro FIR l'output è derivato solo dai precedenti valori di input .
Paul R,

1
@Parha Feedback è un effetto collaterale della topologia. E per topologia intendo qualcosa come un diagramma di flusso o una vista "schematica" del filtro. Fondamentalmente, i risultati di un'operazione matematica in uno stadio alimentano un'altra operazione in uno stadio precedente. Questo è il feedback. Molte persone trovano FIR più facile da usare perché non hanno quel feedback. Questo feedback è difficile da far funzionare correttamente, ma ha una grande efficienza.

Un sistema IIR ha uno stato interno che "ricorda" l'input precedente per sempre. Il modo in cui lo modellate consiste nel reinserire gli output precedenti nell'output corrente, come questo modulo diretto 1 biquad, o in modo equivalente un loop di feedback all'ingresso, come questo biquad canonico forma diretta 2 .
Eryk Sun,

11


b0yb0z1b1b1bi


z1

inserisci qui la descrizione dell'immagine

I
filtri FIR FIR hanno invece un percorso lineare da input a output. Dopo N campioni il segnale di ingresso (come un impulso di Dirac) sarà stato spostato fuori e questa è la fine.
I filtri FIR sono intrinsecamente stabili, mentre i filtri IIR non sono necessariamente.

inserisci qui la descrizione dell'immagine


1
che il looping singal non può essere pericoloso dando risultati indesiderati in alcuni casi?
GorillaApe,

2
Sicuramente può. Usa i percorsi di feedback o i guadagni sbagliati e puoi creare un filtro instabile o uno che emette una sinusoide di qualcosa per sempre. In genere non è quello che vuoi che faccia un "filtro", quindi ci sono tecniche per analizzare la stabilità ed evitare l'instabilità.
Olin Lathrop,

La somma di tutti i termini di feedback deve ricondurre all'inizio della catena di feedback oppure l'output di termini successivi può essere sommato all'input in termini successivi? Mentre mi aspetterei che qualsiasi filtro che potesse essere realizzato in quest'ultimo modo potesse trasformarsi nella forma che hai illustrato, direi che esiste una sottoclasse utile di filtri IIR che possono essere formati da filtri del primo ordine in cascata (dove ciascuno l'output di ciascun termine del lato destro può alimentare se stesso, ma nessuno dei suoi predecessori)
supercat

1
a1a2

@stevenvh: Come ho notato nella mia risposta, c'è un utile sottoinsieme di filtri IIR in cui uno stadio può tornare a se stesso ma a nessuno stadio precedente; Non so di aver letto un termine per descrivere tali filtri, ma sono molto più facili da caratterizzare rispetto ai filtri IIR generalizzati. Sebbene possano essere resi con i giusti coefficienti nella forma sopra, sarebbe più difficile riconoscere un tale filtro (esiste un termine per loro?) In quella forma.
supercat

4

Esistono due grandi classi di filtri digitali, la risposta implusa infinita (IIR) e la risposta agli impulsi finiti (FIR). Anche in questo caso, i filtri IIR sono basati su equazioni e filtri FIR basati su tabella.

I filtri IIR sono più simili ai filtri analogici del mondo reale. Ad esempio, considera un semplice decadimento esponenziale come quello ottenuto da un filtro passa basso analogico RC. La risposta dell'output a un input step è un esponenziale che si avvicina sempre di più all'input. Si noti che questo esponenziale non arriva mai all'output, solo abbastanza vicino in modo che non ci interessa o non possiamo misurare l'errore. In tal senso, un tale filtro è inifinito. Un filtro IIR ha le stesse caratteristiche.

Il filtro IIR passa basso unipolare molto comune può essere espresso come:

FILT <- FILT + FF (NUOVO - FILT)

Ciò significa che ogni iterazione dell'uscita viene spostata di una frazione fissa (FF, la "frazione del filtro") della distanza dall'ingresso. È facile da visualizzare quando FF = 1/2. Se tutto è 0 e l'ingresso va improvvisamente a 1 e rimane lì (un passo di unità), allora l'uscita sarà 1/2, 3/4, 7/8, 15/16, ecc. Questa è una serie infinita. Alla fine il valore si avvicinerà così tanto a 1 da essere espresso come 1 poiché i valori digitali nel computer non hanno una precisione infinita.

I filtri FIR funzionano secondo un principio totalmente diverso. Viene salvato un frammento recente finito del segnale di ingresso e ciascuno dei valori salvati viene moltiplicato per un coefficiente diverso, quindi vengono aggiunti tutti i risultati per rendere l'uscita del filtro per quella iterazione. Alla successiva iterazione il valore salvato più vecchio viene scartato, gli altri vengono spostati di uno slot più vecchio e il nuovo input viene inserito nello slot vuoto. Il nuovo frammento salvato viene quindi moltiplicato per i coefficienti, ecc. Questo processo è noto come "convoluzione" e la tabella dei coefficienti spesso definita kernel del filtro. Alcune cose fantasiose e utili possono essere fatte con questo tipo di filtro diventando creativi con i coefficienti. Questo è un argomento su se stesso che non affronterò ora. Tuttavia, poiché un frammento finito dell'input è archiviato in memoria, qualsiasi parte del segnale di input può influenzare l'uscita solo per un tempo finito. Una volta spostato un campione di input, la fine dello snippet memorizzato scompare e non ha più alcun effetto sull'output.

Ci sono interi libri scritti su questa roba e puoi spendere diversi semestri di corsi universitari dedicandoti a questo più profondo. Spero che la mia panoramica di 30 secondi lo dimostri abbastanza per rispondere alla tua domanda.


1

Un punto non ancora menzionato è che i filtri IIR possono essere ulteriormente suddivisi in due stili: quelli in cui gli stadi possono essere classificati, in modo tale che ciascuno stadio sia interamente dipendente dai propri valori precedenti e da quelli degli stadi precedenti e quelli in cui il le fasi non possono essere classificate (perché due o più fasi dipendono l'una dall'altra). È possibile che le fasi in un filtro FIR facciano riferimento alle uscite precedenti di altre fasi, a condizione che possano essere classificate come nel precedente stile di IIR, e nessuna fase fa riferimento alla propria uscita precedente.

Se gli stadi in un filtro IIR possono essere classificati e se l'entità totale dei coefficienti di auto-feedback per un dato stadio è inferiore a uno, il filtro IIR è garantito stabile. Se, ad esempio, uno stadio include una certa quantità di segnale dagli stadi precedenti, più la metà del valore precedente di quello stadio e 1/4 del valore precedente, meno 1/8 del valore precedente, l'entità totale dell'auto- il feedback sarà 7/8, quindi in assenza di ulteriori input dagli stadi inferiori, l'entità del contributo del feedback personale diminuirà del 12,5% ogni iterazione.


0

Una FIR, fa i suoi calcoli su un numero finito di elementi, diciamo 32 o 12 o qualche numero, ma è quello che fa la matematica, prende un numero finito di elementi ed esegue il filtro solo su quelli.

Un IIR fa i suoi calcoli su tutti i campioni che lo nutri. Se gli dai 10 campioni e lo interrompi, ha funzionato su 10 campioni, se gli dai 1.000.000.000 di campioni, la matematica ha operato su 1.000.000.000 di campioni. E se lasci la cosa in esecuzione indefinitamente, avvicinandoti all'infinito (lasciala correre per sempre), allora anche il numero di elementi è indefinito avvicinandosi all'infinito. Poiché la parola finito si applica chiaramente all'altro modello e il modello IIR è destinato a non avere un numero finito di campioni, la parola infinito come il contrario di finito suona semplicemente meglio di indefinito o di qualche altra parola del genere.


"operato su 1.000.000.000 di campioni". Bene, non direttamente. Poiché parte dell'output viene utilizzata nel calcolo per il campione successivo, ci saranno sempre tracce dei campioni precedenti. Il filtro conterrà sempre un numero molto limitato di campioni. E non è "indefinito"; è deterministico, anche se può essere instabile.
Stevenvh,

questo è ciò che stavo insinuando che ogni campione ha alcuni ma piccoli effetti da tutti i campioni che lo hanno preceduto, per IIR.
old_timer,

Il numero infinito vs finito di elementi nel calcolo non è la differenza tra IIR e FIR. L'IIR più semplice funziona solo con 2 elementi di dati: 1 dall'input, 1 dall'output.
Radagast,

L'infinito non dipende dal numero di input ma dal numero di cicli accumulati, il numero finito prende solo N numero di campioni per un singolo input in matematica, infinito opera efficacemente su ogni ciclo. Numero finito di cicli vs numero infinito di cicli per un singolo input.
old_timer
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.