Messaggioda lupo grigio » 05/04/2007, 15:43

Uhmmmm!… veramente mi pare che se $H_2^(-1)(z)$ è instabile qualsiasi cosa le ‘diamo in pasto’ saranno problemi… o no?… Vediamo allora di impostare un poco il problema in termini più 'appropriati'…

Supponiamo per il momento che il ‘filtro diretto’ abbia una risposta all’impulso di lunghezza finita. Diciamo allora che una sequenza qualsiasi lunga $n$ può essere rappresentata in forma di z-trasformata come…

$P(z)= c_0+c_1*z^(-1)+c_2*z^(-2)... +c_(n-2)*z^(-n+2)+c_(n-1)*z^(-n+1)=$

$= c_0*(1-r_1*z^(-1))*(1-r_2*z^(-1))… (1-r_(n-2)*z^(-1))*(1-r_(n-1)*z^(-1))$ (1)

... essendo le $r_i$, $ i=1,2,...,n-1$ le radici del polinomio in $z^(-1)$ di grado $n-1$.

Data $P(z)$ è possibile definire la sequenza inversa $Q(z)$ come…

$Q(z)=c_0*z^(-n+1)+c_1*z^(-n+2)+...+c_(n-2)*z^(-1)+c_(n-1)=$

$= c_0*z^(-n+1)*(1-r_1*z)*(1-r_2*z)*...*(1-r_(n-2)*z)*(1-r_(n-1)*z)$ (2)

Dal confronto tra la (1) e la (2) è abbastanza immediato verificare che se $alpha$ è radice di $P$, allora $1/alpha$ è radice di $Q$. Questo significa che per $Q$ vale lo sviluppo…

$Q(z)= Inv [P(z)]= c_(n-1) * (1-z^(-1)/(r_1))*(1-z^(-1)/(r_2))*...*(1-z^(-1)/(r_(n-2)))*(1-z^(-1)/(r_(n-1)))$ (3)

… ove con $Inv[*]$ abbiamo indicato un operatore che associa ad una sequenza la sua inversa…

Definiamo ora il concetto di ‘sequenza a fase minima’ e ‘sequenza a fase massima’. Una sequenza $P(z)$ si dice a fase minima se tutte le sue radici sono in modulo minori [o uguali] a 1. Una sequenza $Q(z)$ si dice a fase massima se tutte le sue radici sono in modulo maggiori [o uguali] a 1. Và da sé che per una qualunque sequenza $H(z)$ è…

$H(z)$ = $H_p(z)*H_q(z)$ (4)

… dove $H_p$ è a fase minima e $H_q$ è a fase massima. Va pure da sé che la convoluzione di due sequenza a fase minima è a fase minima e la convoluzione di due sequenza a fase massima è a fase massima…

Và bene quello che ho scritto fin qui?…

cordiali saluti

lupo grigio

Immagine

An old wolf may lose his teeth, but never his nature
lupo grigio
 

Messaggioda luca.barletta » 05/04/2007, 16:29

luca.barletta ha scritto:si potrebbe dare in pasto a $H_2^(-1)$ la sequenza ${y_(-n)}$ invece che ${y_n}$, rinunciando così a sistemi in tempo reale (a patto di introdurre un ritardo dovuto alla memorizzazione di ${y_n}$)


l'idea c'è ma non sono stato molto preciso; rimedio ora:
stiamo considerando il sistema $X(z)=Y(z)(N(z))/(D(z))$ (usando la tua notazione); potremmo portare a termine la deconvoluzione suddividendo la parte causale da quella anticausale del sistema:
$X(z)=Y(z)(N(z))/(D_(min)(z))*1/(D_(max)(z))$
dove in $D_(min)(z)$ ho raggruppato tutte le radici entro il cerchio unitario (poli a fase minima), e in $D_(max)(z)$ le radici fuori dal cerchio (poli a fase massima).
Ora, possiamo convolvere ${y_n}$ con la parte causale-convergente del sistema, cioè $(N(z))/(D_(min)(z))$, ottenendo il risultato intermedio:
$X^'(z)=Y(z)(N(z))/(D_(min)(z))$
che è la zeta-trasformata della sequenza ${x_n^'}$; quest'ultima deve essere convoluta con la parte rimanente del sistema, che è causale-instabile ovvero anticausale-stabile.
Per fare ciò è sufficiente ribaltare l'asse temporale, infatti ${x_(-n)^'}harrX^'(1/z)$ e dunque:
$X(1/z)=(X^'(1/z))/(D_(max)(1/z))$
dove $D_(max)(1/z)$ ha le radici reciproche di $D_(max)(z)$ e quindi all'interno del cerchio unitario.
Infine la sequenza corrispondente a $X(1/z)$ deve ancora essere ribaltata nel tempo per ottenere ${x_n}$
Frivolous Theorem of Arithmetic:
Almost all natural numbers are very, very, very large.
Avatar utente
luca.barletta
Moderatore globale
Moderatore globale
 
Messaggio: 2296 di 4341
Iscritto il: 21/10/2002, 20:09

Messaggioda lupo grigio » 06/04/2007, 09:47

Diciamo che certamante 'l’idea c’è' anche se preferisco, come sempre, andare avanti con i cosiddetti ‘piedi di piombo’…

Intanto vale sempre l’ipotesi che il filtro che si deve ‘invertire’ abbia risposta all’impulso finita. Nello scorso postato abbiamo visto che per una qualunque z-trasformata $H(z)$ di soli zeri possiamo scrivere…

$H(z)=H_p(z)*H_q(z)$ (1)

… ove con $H_p$ e $H_q$ si intendono le componenti di $H$ rispettivamente ‘a fase minima’ e ‘a fase massima’. Di conseguenza la relazione ingresso/uscita del sistema seguente…

Immagine

… potrà essere scritta come…

$Y=Y_p*Y_q= H_p*H_q*X_p*X_q$ (2)

… dove è evidente che è…

$Y_p=H_p*X_p$, $Y_q=H_q*X_q$ (3)

Le semplici equazioni (3) sono assai utili perchè dimostrano che le componenti a fase minima e fase massima di $Y$ possono essere trattate separatamente. Dal momento che sappiamo che una funzione FIR a fase minima è invertibile possiamo senz’altro scrivere…

$X_p=H_p^(-1)*Y_p$ (4)

Per quanto riguarda le componenti a fase massima invece occorre prendere una strada differente. Dal momento che una sequenza a fase massima può essere trasformata a fase minima con l’operazione di inversione possiamo scrivere…

$Inv[Y_q]= Inv[H_q]*Inv[X_q]$ (5)

… da cui con un poco si passaggi si ottiene…

$X_q= Inv[Inv^(-1)[H_q]*Inv[Y_q]]$ (6)

Una volta note $X_p$ e $X_q$ è immediato trovare…

$X(z)=X_p(z)*X_q(z)$ (7)

La procedura per realizzare il filtro inverso di una $H(z)$ qualunque può essere dunque ipotizzato nel seguente modo…

a) si scompongono in fattori le due sequenze $H(z)$ e $Y(z)$
b) si separano le componenti a fase minima e massima di $H(z)$ e $Y(z)$
c) si calcola $X_p$ con la (4)
d) si calcola $X_q$ con la (5)
e) si calcola $X$ con la (7)

Il metodo è certo attraente per la sua ‘semplicità’ [sono necessarie operazioni aritmetiche elementari…] ma nasconde due grosse ‘insidie’...

In primo luogo prendiamo in esame la $Y(z)$. Se $Y(z)$ è lunga $n$ campioni essa è un polinomio di grado $n-1$ e occorre isolare tutte le sue $n-1$ radici. Se si tratta di una brano musicale di un’ora registrato a 50.000 campioni al secondo $n$ vale $1.8*10^8$… :shock:

In secondo luogo che cosa si fa se una delle radici di $H$ o di $Y$ ha modulo esattamente uguale a 1?… Darà contributo a fase minima o massima?…

Più avanti cercheremo di trovare soluzione a queste due ‘insidie’. Per il momento c’è qualcuno che ha qualche 'critica' da fare a come ho fatto fin qui?…

cordiali saluti

lupo grigio

Immagine

An old wolf may lose his teeth, but never his nature
lupo grigio
 

Messaggioda luca.barletta » 06/04/2007, 17:09

lupo grigio ha scritto:Per il momento c’è qualcuno che ha qualche 'critica' da fare a come ho fatto fin qui?…


Perché scomponi anche Y(z) nelle 2 componenti?
Frivolous Theorem of Arithmetic:
Almost all natural numbers are very, very, very large.
Avatar utente
luca.barletta
Moderatore globale
Moderatore globale
 
Messaggio: 2304 di 4341
Iscritto il: 21/10/2002, 20:09

Messaggioda lupo grigio » 11/04/2007, 15:23

Beh!... in sostanza la $Y_p$ contiene informazioni sulla componenti 'a fase minima' $X_p$ e la $Y_q$ contiene informazioni sulla componente 'a fase massima' $X_q$. Per ottenere entrambe devo di necessità separarle... o no?...

cordiali saluti

lupo grigio

Immagine

An old wolf may lose his teeth, but never his nature
Ultima modifica di lupo grigio il 16/04/2007, 09:27, modificato 1 volta in totale.
lupo grigio
 

Messaggioda luca.barletta » 11/04/2007, 17:30

temo non ci sia bisogno, tant'è che non si fattorizzano polinomi con milioni di termini
Frivolous Theorem of Arithmetic:
Almost all natural numbers are very, very, very large.
Avatar utente
luca.barletta
Moderatore globale
Moderatore globale
 
Messaggio: 2312 di 4341
Iscritto il: 21/10/2002, 20:09

Messaggioda lupo grigio » 16/04/2007, 09:58

Ragazzi
vediamo di riprendere il discorso sul ‘filtro inverso’, cha ho [colpevolmente…] lasciato da parte per seguire altre strade, cercando bene si separare i problemi rimasti aperti…

a) che fare con le funzioni che hanno zeri sul cerchio unitario e quindi non sono ‘trattabili’ né come ‘a fase minima’ né come ‘a fase massima’
b) che fare con le sequenze di lunghezza elevata

Affrontiamo da prima il ‘problema a’. Se supponiamo che il blocco H abbia risposta all’impulso finita di lunghezza $N$ essa è esprimibile in forma di z-trasformata come…

$H(z)= h_0*(1- r_1*z^(-1))*(1-r_2*z^(-1))*...*(1-r_(N-1)*z(-1))$ (1)

… essendo le $r_i$, $i=1,2,…, N-1$ gli ‘zeri’ della $H(z)$. Ora abbiamo visto che se per tutte le $r_i$ è $|r_i|<1$ o $|r_i|>1$ la $H(z)$ può essere scomposta in due copmpeoenti ciascuna delle quali è invertibile. Se viceversa per una o più delle $r_i$ è $|r_i|=1$ allora si può vedere facilmente che la $H(z)$ non è invertibile. Che si fa allora?…

Senza lasciarci prendere dallo sconforto proviamo a scrivere nuovamente la relazione ingresso uscita per un sistema a risposta finita

$y(n)= sum_(i=0)^(N-1) h_i*x(n-i)$ (2)

… che in termini di z-trasformata diviene…

$Y(z)= H(z)*X(z)$ (3)

Se la sequenza $x(n)$ ha lunghezza finita M e $h(n)$ ha lunghezza finita N allora la sequenza $y(n)$ avrà lunghezza finita $M+N-1$… non è vero?… In particolare se fattorizziamo sia $X(z)$ sia $H(z)$ la (3) diviene…

$Y(z)= h_0*(1-r_1*z^(-1))*(1-r_2*z^(-1)*…*(1-r_(N-1)*z^(-1))*$

$*x_0*(1-alpha_1*z^(-1))*(1-alpha_2*z^(-1))*…*(1-alpha_(M-1)*z^(-1))$ (4)

Dal momento che sia $H(z)$ sia $Y(z)$ sono noti e che le $r_i$ sono zeri di entrambi, la soluzione generale del problema potrebbe risiedere nella seguente procedura…

a) si sviluppa $H(z)$ in fattori
b) si sviluppa $Y(z)$ in fattori
c) si forma il polinomio $X(z)$ eliminando da $Y(z)$ i fattori che esso ha in comune con $H(z)$ e dividendo per $h_0$

Semplice no?… almeno dal punto di vista ‘concettuale’… voi che ne dite?…

cordiali saluti

lupo grigio

Immagine

an old wolf may lose his teeth, but never his nature
lupo grigio
 

Precedente

Torna a Algebra, logica, teoria dei numeri e matematica discreta

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite