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?
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:
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.
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.
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.
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.
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.