Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Roberto Patrizi
Professore:
Aurelio Uncini
Roberto Patrizi
Frosinone, 2 maggio 2009
e-mail: roberto_patrizi@virgilio.it
Composto in LATEX
INDICE
PREFAZIONE v
1 BASI 1
1.1 ALGORITMO LMS 1
1.1.1 Modello SISO 1
1.1.2 Algoritmo aggiornamento coefficienti 2
1.2 PROBLEMA DI NON UNICITÀ 4
1.3 METODI DI DECORRELAZIONE 5
1.4 ALGORITMO IPNLMS 5
2 I M P L E M E N TA Z I O N E 9
2.1 FILTER DESIGN 9
2.1.1 Comandi comuni 10
2.2 ROOMSIM 12
2.2.1 Descrizione del toolbox 12
2.2.2 Risposte impulsive 14
2.3 PREPARAZIONE DELLA SIMULAZIONE 16
2.3.1 Algoritmo LMS 18
2.4 IMPLEMENTAZIONE IPNLMS 19
2.5 PRESTAZIONI 21
2.5.1 Troncamento della risposta impulsiva 22
2.5.2 Inseguimento 23
2.5.3 Coerenza delle sorgenti 24
BIBLIOGRAFIA 27
i
ACRONIMI
FA Filtro Adattativo
Filtro i cui coefficienti che vengono aggiornati ad ogni campione
elaborato.
MATLAB © Matlab ©
Matlab © è un programma della MathWorks © Inc, 1994-2009.
iii
iv Indice
v
vi PREFAZIONE
1 Qui distorsioni è inteso come una qualsiasi alterazione del segnale, anche una
equalizzazione, riverbero o cammini multipli.
2 In uscita dal filtro vorrei avere lo stesso segnale che ho in uscita dal microfono, quindi
nella realizzazione del filtro il segnale di riferimento del microfono è indicato come
desiderato.
1
2 BASI
x₁ h₁
nl
w₁
y₁
e - d
min{Ĵ } S
-
y₂
x₂ w₂
nl h₂
d [ n ] = h [ n ] ⊗ x [ n ] + b [ n ], (1.1)
d [ n ] = x [ n ] ⊗ h [ n ],
y [ n ] = x [ n ] ⊗ w [ n ],
e [ n ] ≡ d [ n ] − y [ n ] = d [ n ] − x [ n ] ⊗ w [ n ], (1.2)
1.1 ALGORITMO LMS 3
J (w) ≡ ∑|e[n]|2 ,
o di tipo stocastico se la funzione costo è definita come Mean Square
Error (MSE)
J (w) ≡ ∑ E |e[n]|2 ,
(1.3)
wk = wk−1 + µe[k] xk ,
x p = g p ⊗ xs , p = 1, 2, . . . , P,
x p (n) + | x p (n)|
x 0p (n) = x p (n) + α . (1.7)
2
Risultati sperimentali mostrano che la percezione sonora è debolmente percezione sonora
affetta da tali distorsioni che vengono assimilate a suoni di seconda delle distorsioni
armonica. Inoltre si hanno degli effetti di mascheramento nel parlato.
Altri approcci sfruttano una rettificazione di semi-onda graduale
che risulta più appropriata per la musica, sebbene presenti maggior
complessità computazionale.
Un altro modo per ridurre la correlazione è quello di inserire rumore
opportunamente sagomato in modo da disturbare il meno possibile.
Infine un ulteriore tecnica consiste nell’utilizzare filtri tempo varianti
in modo da variare casualmente la posizione dei poli del filtro.
Inizializzazione: h = 0| L × P
Parametri: 0<α≤1
−1 ≤ β ≤ −1
1−β
0 < δ σs2
2L
ε>0
Errore: e(k ) = d − ∑ p w Tp (k − 1) x p
1−β |w p (k)|
Aggiornamento: g p (k) = + (1 + β )
2PL 2kw p (k )k1 + ε
α
µ(k) =
∑ p ∑n x2p (k) g p (k) + δ
w p ( k ) = w p ( k − 1) + µ ( k ) g p ( k ) x p e ( k )
1 Tale cartella sarà posizionata nella sotto cartella /toolbox/filterdesign che solitamente
si trova nel percorso di installazione di Matlab.
9
10 IMPLEMENTAZIONE
adaptfilt.lms
Permette di generare dei filtri adattativi LMS o di altri tipi, specifican-
done il nome (scelto tra quelli disponibili per default) dopo il punto.
La sintassi è:
1 ha=adaptfilt.lms(L,stepsize,leakage,coeffs,states)
filter
L’operazione di filtraggio avviene tramite il comando filter, che può
accettare semplici vettori o oggetti più complessi come il filtro adatta-
tivo creato precedentemente. Se ho un semplice vettore posso scrivere
1 y = filter(b,a,x);
2.1 FILTER DESIGN 11
N M
∑ ak y[n − k ] = ∑ bk x [ n − k ] . (2.1)
k =0 k =0
per calcolare sia l’uscita del filtro adattativo per l’ingresso x in riferi-
mento al segnale desiderato d, che l’errore e tra il segnale generato dal
filtro y ed il segnale desiderato d.
xcorr
Calcola la crosscorrelazione tra dei vettori x, y, o l’autocorrelazione se
un solo vettore viene passato alla funzione. La sintassi è
1 c = xcorr(x,y); % Correlazione
2 c = xcorr(x); % Autocorrelazione
mfilt
Crea un filtro multirate, permettendo di scegliere tra vari metodi, tra
cui cascata di filtri, interpolatori e decimatori. In particolare un sem-
plice decimatore Finite Impulse Response (FIR) si ottiene con la sintassi
1 hd = mfilt.firdecim(m)
norm
Una semplice istruzione per calcolare la norma di un vettore x modulo
p,
è
1 normap = norm(x,p);
File audio
Per operare con i file audio sono disponibili i comandi
1 x = wavread(file);
che assegna al vettore x il contenuto del file indicato dal vettore di tipo
stringa file, eventualmente passato come testo tra singoli apici e non
come variabile.
Il comando inverso, per salvare un vettore elaborato come file .wav è
1 wavwrite(x,path)
Directory Contenuto
\cipic Risposte impulsive del capo
\Excel_setups File di impostazione in formato excel
\text_setups File di impostazione in formato testo
\sensor\types Risposte direzionali dei microfoni
\Impulse_response Risposte impulsive calcolate da roomsim
2.2 ROOMSIM
Il toolbox roomsim2 è un insieme di programmi Matlab per calcolare
la risposta impulsiva di un ambiente.
Non appena viene installato il toolbox, occorre aggiornare le directo-
ry Matlab, successivamente sarà possibile avviare l’interfaccia grafica
mostrata in figura 3a nella pagina successiva, digitando al prompt di
Matlab:
1 roomsim
(a) (b)
(a) (b)
3 Sia il grafico delle sorgenti immagini che il successivo, possono essere omessi tramite
14 IMPLEMENTAZIONE
0.1
0.05
-0.05
h , ξ=0.51977 h , ξ=0.57511
21 22
0.15
0.1
0.05
-0.05
0 0.1 0.2 0.3 0 0.1 0.2 0.3
opportune impostazioni del file excel di setup, tuttavia sono fornite in questa parte
alcune informazioni di interesse.
2.2 ROOMSIM 15
Schema stanza
y
R₂ h₁₂
2 S₁
R₁ h₁₁
h₂₁ h₂₂
1
S₂
0
0 1 2 3 4 5 x
Sensori Microfoni
1 2 1 2
x 1 1 4 3
y 2 2.25 2 1
z 1.2 1.2 1.2 1.2
k h k1
L
ξ (h) ≡ √ 1− √ , (2.2)
L− L L k h k2
0 ≤ ξh ≤ 1,
∀ a 6= 0, ξ ( ah) = ξ (h).
0.08
0.06
0.04
0.02
-0.02
-0.04
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35
19
20 %wavwrite(d,[path,’\Matlab\Sound\micrec’])
Listato 2.1: Comandi Matlab per generare il segnale registrato del microfono.
3 L=2048; % Lunghezza FA
4 Sx=size(x);
5 niter = max(Sx); % numero di iterazioni
6 y = zeros(niter,1); % creo un vettore di uscita di elem nulli
7 e = y; % creo il vettore errore di elem nulli
8 X = zeros(L,P); % L elem di x usati in ogni iterazione
9 clear Sx;
10
8 % Preallocazione variabili
9 mu = e;
10 misa = zeros(L,P);
20 IMPLEMENTAZIONE
ERLE
60
50
40
30
(dB)
20
10
−10
0 1 2 3 4 5
tempo(sec)
11 g = zeros(P,L);
12
• α = 0.3;
• β = −0.5;
4 Per la definizione dell’ERLE si veda il § 2.5 nella pagina successiva
2.5 PRESTAZIONI 21
MISA
10
−10
−20
(dB)
−30
−40
−50
−60
0 1 2 3 4 5
tempo(sec)
• e = 0.001;
• δ = 10σx2 .
2.5 PRESTAZIONI
Per finire vediamo come si comportano gli algoritmi presentati, quali
sono cioè le prestazioni.
22 IMPLEMENTAZIONE
ERLE MISA
50 10
40 0
30 −10
20 −20
(dB)
(dB)
10 −30
0 −40
−10 −50
0 2 4 0 2 4
tempo(sec) tempo(sec)
Figura 10: Effetto del troncamento della risposta impulsiva sulle capacità di
adattamento del filtro.
Pd Ed2 [n]
η ≡ 10 log10 = 10 log10 2 , (2.4)
Pe Ee [n]
Segnale desiderato
0.8
0.6
0.4
0.2
−0.2
−0.4
−0.6
−0.8
0 1 2 3 4 5 6 7 8 9 10
tempo(sec)
Figura 11: Andamento del segnale desiderato per via della variazione della ri-
sposta impulsiva dell’ambiente. Ciascun colore indica una risposta
impulsiva.
2.5.2 Inseguimento
Un’altra proprietà delle risposte impulsive, è la variabilità. In genera-
le i parametri di una sala non saranno mai costanti, basta aprire una
finestra o una porta per variare considerevolmente l’acustica dell’am-
biente, su cui agiscono anche molti altri fattori, come la presenza di
persone in movimento, flussi d’aria e variazioni di temperatura.
La simulazione della variazione della risposta impulsiva della stanza
è stata sostituita con la variazione del percorso, sono state quindi con-
siderate le risposte impulsive h12 , hs ed h11 , con coefficienti di densità
rispettivamente di 0.505, 0.632 e 0.531.
Il segnale desiderato è stato ottenuto a partire da un segnale tipo
rumore bianco uniforme, variando la risposta impulsiva della sala ogni
3 secondi. Il segnale desiderato così generato per le simulazioni è
mostrato in figura 11.
Per ciascun segmento di segnale l’algoritmo è in grado di ricava-
re la risposta impulsiva, ma ciascuna variazione della risposta impul-
siva comporta un nuovo periodo di inseguimento durante il quale
l’algoritmo non è in grado di cancellare l’eco.
24 IMPLEMENTAZIONE
ERLE
35
30
25
20
15
(dB) 10
−5
0 1 2 3 4 5 6 7 8 9
tempo(sec)
Figura 12: Inseguimento della risposta impulsiva che cambia ogni 3 secondi.
Nell’ordine le risposte impulsive sono h12 , hs e h11 , rispettivamente
con indice di densità ξ pari a 0.505, 0.632 e 0.531.
ω + |ω |
x1 =
2
ω − |ω |
x2 =
2
ω + |ω | κ
x1 = ω + κ −
2 2
ω − |ω | κ
x2 = ω + κ − ,
2 2
2.5 PRESTAZIONI 25
ERLE
50
40
30
20
(dB)
10
−10
0 1 2 3 4 5
tempo(sec)
Figura 13: Echo Return Loss Enhancement (ERLE) per un sistema MISO a 2
ingressi con correlazione variabile, per vari livelli di correlazione.
L’equazione degli ingressi è la (2.5), i valori del parametro di cor-
relazione κ sono rispettivamente κ = 5 (—), κ = 2 (—), κ = 1 (—),
κ = 0(—)
Disallineamento
0
−2
−4
(dB)
−6
−8
−10
0 1 2 3 4 0 1 2 3 4
tempo(sec)
ω + |ω | κ
1
x1 = ω + κ − κ (2.5)
2 2 2 +1
ω − |ω | κ
1
x2 = ω + κ + , κ (2.6)
2 2 2 +1
27