Vai al contenuto

Primario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Secondario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Sfondo: Blank Waves Squares Notes Sharp Wood Rockface Leather Honey Vertical Triangles
Corsi di Laurea










ROX @ Unisa - Forum degli studenti di Ingegneria utilizza i cookie. Se prosegui la navigazione accetti il loro uso.    Accetto l'uso dei cookie
-->
Foto

Problema predizione con filtro di Wiener


  • Effettua l'accesso per rispondere
Nessuna risposta in questa discussione

#1
uomocheride

uomocheride

    Advanced Member

  • Utente
  • StellaStellaStella
  • 130 Messaggi:
Faccio riferimento ai fali Es_Pred e Sol_Pred_Wiener della lezione 12.

Il problema riguarda il filtraggio predittivo per ottenere il valore d(n) a partire dai valori x(n), x(n-1) e x(n-2).
Dopo aver realizzato il filtro di Wiener ottimo, il programma Sol_Pred_Wiener mostrato a lezione effettua un certo numero di realizzazioni in cui viene creato un segnale x da passare al filtro ottimo per ottenere y. Riporto di seguito le istruzioni che mi risultano poco chiare:
D=1;
s=sigma_w*randn(1,lunghsim+D);
x=filter(1,[1 -rho],s);

d=x(D+1:end);
x=x(1:lunghsim);


In tal modo viene creato un vettore di lunghezza "lunghsim+1", da cui poi viene realizzato un vettore d, dato dal vettore x privato del primo elemento. Così facendo però si ottiene un vettore d di lunghezza lunghsim x(n-lunghsim), posto nell'ultima casella del vettore d, fino al valore x(n-1), posto nella prima casella del vettore d. Il vettore x viene infine accorciato di un elemento (viene privato dell'ultimo valore) in modo che, quando posto in ingresso al filtro ottimo di Wiener, restituisca un vettore y della stessa dimensione del vettore d e quindi confrontabile con esso. Tuttavia andremmo così a confrontare i valori di y=[F(x(n) F(x(n-1) F(x(n-2)...... F(x(n-lunghsim+1)] coi valori d=[x(n-1) x(n-2) x(n-3)......x(n-lunghsim)], e quindi non avremmo mai un confronto col valore d(n+1)=x(n+1) da noi desiderato.
Se invece il codice fosse:

D=1;
s=sigma_w*randn(1,lunghsim+D);
d=filter(1,[1 -rho],s);

x=d(D+1:end);
d=d(1:lunghsim);

io realizzerei un vettore d di lunghsim+1 elementi, diciamo contenenti i valori d=[d(n+1) d(n) d(n-1)....d(n-lunghsim+1)], da cui poi estrarrei un vettore
x=[d(n) d(n-1) d(n-2)....d(n-lunghsim+1)]=[x(n) x(n-1) x(n-2)......
x(n-lunghsim+1)]. Tale vettore, inserito in un filtro ottimo di Wiener, produrrà un uscita di lunghsim elementi, ossia y=[F(x(n) F(x(n-1) F(x(n-2)...... F(x(n-lunghsim+1)]. Potrei quindi confrontare in tal modo l'elemento d(n+1) con il valore di y, ottenuto a partire dai valori di x precedenti l'istante n+1.

come si spiega?

ringrazio anticipatamente chiunque vorrà darmi una mano.






Leggono questa discussione 0 utenti

0 utenti, 0 ospiti, 0 utenti anonimi