Sunteți pe pagina 1din 12

PNS Lucrarea 4 Convoluţia și corelația secvenţelor

Lucrarea 4

Convoluţia și corelația secvenţelor

1. Convoluţia liniară a secvenţelor

Există două metode de bază, folosite în analiza răspunsului sistemelor discrete


liniare, invariante în timp (SDLIT), la un semnal de intrare dat. Una se bazează pe
obţinerea soluţiei din ecuaţia intrare – ieşire care caracterizează sistemul, care are, în
general, forma
N M
y [ n ] = −  ak y [ n − k ] +  bk x [ n − k ] , (4.1)
k =1 k =0

unde ak şi bk sunt parametri constanţi care caracterizează sistemul şi independenţi de


x [ n ] şi y [ n ] . Relaţia de mai sus se numeşte ecuaţie cu diferenţe a sistemului discret,
liniar, invariant în timp.
A doua metodă se bazează pe folosirea răspunsului la impuls al sistemului,
h [ n ] . Ca o consecinţă a proprietăţilor de liniaritate şi invarianţă în timp, răspunsul
sistemului la un semnal de intrare arbitrar poate fi exprimat în funcţie de răspunsul său
la impuls cu ajutorul sumei de convoluţie. Pentru determinarea răspunsului unui sistem
liniar la un semnal de intrare dat, acesta se descompune într-o sumă de semnale
elementare componente şi, folosind proprietatea de liniaritate a sistemului,
răspunsurile sistemului la semnalele elementare se sumează pentru a forma răspunsul
total

y [n] = ( x ∗ h ) [n] = ( h ∗ x ) [n] =  x [k ] ⋅h [n − k ]
k =−∞
(4.2)

Pentru două secvenţe, x şi h, de lungimi Lx , respectiv Lh , reprezentate prin:


{
x = x [ n ] , n = nx ,min , nx ,min + Lx − 1 }
(4.3)
h = {h [ n ] , n = nh ,min , nh ,min + Lh − 1}
se defineşte convoluţia lor liniară prin una din formele:
∞ ∞
y [n] = ( x ∗ h ) [n] = ( h ∗ x ) [n] =  x [k ] ⋅h [n − k ] =  h [k ] ⋅ x [n − k ] .
k =−∞ k =−∞
(4.4)

Dacă secvenţele x şi h au transformatele Z:



X ( z) =  x[k ] ⋅ z
k =−∞
−k
, (4.5)

H ( z) =  h[k ] ⋅ z
k =−∞
−k
, (4.6)
atunci convoluţia lor liniară are transformata Z:

Y ( z) = X ( z)H ( z) =  y[ k ] ⋅ z
k =−∞
−k
(4.7)

43
PNS Lucrarea 4 Convoluţia și corelația secvenţelor

2. Convoluţia ciclică a secvenţelor

Pentru două secvenţe periodice, de aceeaşi perioadă N:


{
x = x [ n ] , n = 0, N − 1 }
(4.8)
h = {h [ n ] , n = 0, N − 1}
se defineşte convoluţia lor ciclică, prin secvenţa periodică:
yc = x ⊗ N h = h ⊗ N x = { yc [n ], n = 0, N − 1} , (4.9)
în care valoarea yc [n ] este definită de relaţia:
N −1 N −1
yc [n ] =  x[k ]h ( n − k )( N )  =  h[k ]x ( n − k ) ( N )  (4.10)
k =0
  k =0  
unde s-a notat prin
 n − k , pentru n ≥ k
( n − k )( N ) = ( n − k ) modulo N =  (4.11)
n − k + N , pentru n < k
Dacă secvenţele sunt reprezentate (într-o perioadă) prin polinoamele:
N −1
X ( z ) =  x[k ] ⋅ z k , cu grad{ X ( z )} = N -1 (4.12)
k =0
N −1
H ( z ) =  h[k ] ⋅ z k , cu grad{H ( z )} = N -1 (4.13)
i =0

atunci convoluţia lor ciclică este reprezentată de polinomul:


Yc ( z ) = X ( z ) H ( z ) modulo ( z N − 1) (4.14)
Observație. Dacă numărul de puncte N în care se calculează convoluția liniară este cel
puțin Lx + Lh − 1 , unde Lx și Lh sunt lungimile secvențelor x, respectiv h, atunci
secvența corespunzătoare convoluției ciclice, yc [n ] , este identică cu secvența
corespunzătoare secvenței liniare a secvențelor x și h, y[n ] .

3. Corelaţia liniară şi ciclică a secvenţelor

Pentru două secvenţe finite x şi h, de lungimi Lx , respectiv Lh , reprezentate


prin:
{
x = x [ n ] , n = n x ,min , n x ,min + Lx − 1 }
(4.15)
h = {h [ n ] , n = n h ,min , nh ,min + Lh − 1}
se defineşte corelaţia liniară prin una din secvenţele rxh sau rhx , unde
+∞ +∞
rxh [n ] = 
k =−∞
x[k ]h[k − n ] =  x[k + n]h[k ],
k =−∞
+∞ +∞
(4.16)
rhx [n ] =  h[k ]x[k − n] =  h[k + n]x[k ]
k =−∞ k =−∞

Se observă că în calculul corelaţiei liniare contează care secvenţă este


considerată prima. Este adevărată relaţia rxh [n ] = rhx [ −n ] .

44
PNS Lucrarea 4 Convoluţia și corelația secvenţelor

Dacă X ( z ) şi H ( z ) sunt transformatele Z ale secvențelor x [ n ] și h [ n ] , iar


Rxh ( z ) este transformata Z a secvenței de corelație liniară rxh [ n ] , atunci este adevărată
relația:

Rxh ( z ) = X ( z ) H ( z −1 ) = r
k =−∞
xh [k ] ⋅ z − k (4.17)

Autocorelaţia liniară a unei secvenţe x [ n ] reprezintă corelaţia acestei secvenţe


cu ea însăşi, adică secvenţa rxx [n ] . Funcția de autocorelație rxx [n ] are proprietatea că
este funcție pară, adică rxx [n ] = rxx [−n ] , ∀n ∈  , și că este maximă în origine, adică
rxx [0] ≥ rxx [n ] , ∀n ≠ 0 . Dacă Rxx ( z ) este transformata Z a secvenței de autocorelație
liniară rxx [ n ] , atunci este adevărată relația:

Rxx ( z ) = X ( z ) X ( z −1 ) = r
k =−∞
xx [k ] ⋅ z − k (4.18)

Dacă secvenţele x şi h sunt periodice, de aceeaşi perioadă N, se defineşte


corelaţia ciclică prin una din secvenţele periodice:
rxh′ = {rxh′ [ n ] , n = 0, N − 1} sau rhx′ = {rhx′ [ n ] , n = 0, N − 1}
unde
N −1 N −1
rxh′ [n ] =  x ( k + n )( N )  h[k ] , rhx′ [n ] =  h ( k + n )( N )  x[k ] (4.19)
k =0
  k =0
 
Este adevărată relaţia
rxh′ [n ] = rhx′ ( −n ) ( N )  = rhx′  ( N − n ) ( N )  . (4.20)
   

4. Metode şi algoritmi pentru calculul convoluţiilor

4.1. Calculul convoluţiei ciclice folosind Transformata Fourier Discretă

Se bazează pe proprietatea:
TFD
yc [n ] = x[n ] ⊗ N h[n ] ←⎯⎯ → Yc [ k ] = X [ k ] H [ k ] , (4.21)
def N −1 2π k ⋅n
−j
unde X [ k ] =  x[n]e
n =0
N
şi se defineşte ca fiind Transformata Fourier Discretă

(TFD) în N puncte a secvenţei x[n ] .


Algoritmul cuprinde trei etape:
1°se calculează: X [ k ] = TFD { x[n ]} şi H [ k ] = TFD {h[n ]} k = 0, N − 1
2°se calculează: Yc [ k ] = X [ k ] H [ k ] k = 0, N − 1
3°se calculează: yc [n ] = TFDI {Yc [ k ]} unde TFDI este Transformata Fourier
N −1 2π k ⋅n
def
1
Yc [k ]e
j
Discretă Inversă definită astfel yc [ n ] = N
.
N k =0

45
PNS Lucrarea 4 Convoluţia și corelația secvenţelor

După cum se poate observa din relaţiile (4.9) şi (4.10), pentru efectuarea directă
a convoluţiei ciclice între două secvenţe cu coeficienţi reali, sunt necesare N 2 înmulţiri
reale şi N ( N − 1) adunări reale.
Eficienţa metodei depinde de eficienţa algoritmului rapid pentru calculul TFD
şi TFDI utilizat în etapele 1° şi 3°. În cazul calculului convoluţiei cu ajutorul TFD vom
avea un număr de 8 N 2 + 4 N înmulţiri ( 2 × 2N 2 la pasul 1°, 4N la pasul 2° şi 2 × 2N 2 la
pasul 3°).
TFD se poate realiza şi utilizând algoritmi rapizi. Dacă N este de forma 2m ,
pentru calculul TFD în N puncte a unei secvenţe este nevoie de 2 N log 2 N înmulţiri
reale şi 3N log 2 N adunări reale. Vor fi deci necesare:
• 4 N log 2 N înmulţiri şi 6 N log 2 N adunări reale pentru realizarea transformatelor
directe ale lui x[n ] şi h[n ] ;
• N înmulţiri complexe, deci 4N înmulţiri şi 2N adunări reale pentru realizarea
produselor X [ k ] H [ k ] ;
• 2 N log 2 N înmulţiri şi 3N log 2 N adunări reale pentru realizarea transformatei
inverse TFDI.
În total, utilizând TFD rapidă, se vor efectua N (6log 2 N + 4) înmulţiri şi
N (9 log 2 N + 4) adunări reale.
De exemplu pentru N = 210 avem:
- 220 înmulţiri şi ≈ 220 adunări reale prin efectuarea directă a convoluţiei;
- 8 ⋅ 220 + 4 ⋅ 210 ≈ 223 înmulţiri reale prin utilizarea TFD;
- 210 (6 ⋅ 10 + 4) = 216 înmulţiri şi 210 (9 ⋅ 10 + 2) ≈ 216,5 adunări reale prin utilizarea
TFD Rapide.

4.2. Algoritmul Cook-Toom pentru calculul convoluţiei liniare

Se presupun secvențele x și h definite astfel:


{
x = x [ n ] , n = 0, Lx − 1}
(4.22)
h = {h [ n ] , n = 0, L − 1}
h

Algoritmul Cook-Toom pentru calculul convoluţiei liniare între secvențele x și


h cuprinde următoarele etape:
1° se alege un set de ( Lx + Lh − 1) valori reale β i = 0, ±1, ±2 etc (unde Lx şi Lh
sunt lungimile secvenţelor x[n ] , respectiv h[n ] ).
2° se evaluează polinoamele:
Lx −1 Lh −1
X ( z) =  x [k ] z
k =0
k
şi H ( z ) =  h [ k ] z k ,
k =0
(4.23)

în z = β i .
3° se calculează Y ( β i ) = X ( β i ) H ( βi ), i = 0, Lx + Lh − 2 .
4° se determină, prin interpolare Lagrange, polinomul:

46
PNS Lucrarea 4 Convoluţia și corelația secvenţelor

Lx + Lh − 2 Lx + Lh − 2
z −βj Lx + Lh − 2
Y ( z) = i =0
Y ( βi ) ⋅ ∏
j =0, j ≠i βi − β j
=  y [k ] z
k =0
k

4.3. Algoritmul Winograd pentru calculul convoluţiei liniare şi ciclice

Algoritmul se bazează pe reprezentarea polinomială a celor două secvenţe x[n ]


şi h[n ] din (4.22), X ( z ) , respectiv H ( z ) , ca în (4.23).
Se calculează Y ( z ) = X ( z ) H ( z )mod M ( z ) unde, în cazul convoluţiei liniare
grad{M(z)}>grad{Y(z)}, iar în cazul convoluţiei ciclice M ( z ) = z N − 1 .
Polinomul M ( z ) poate fi descompus în polinoame simple, ireductibile, astfel
încât:
M ( z ) = ∏ M ( d ) ( z ) =M (0) ( z ) ⋅ M (1) ( z ) ⋅ ... ⋅ M ( K −1) ( z ) .
d N

unde produsul se face după toţi divizorii lui N ( d / N reprezintă toţi divizorii lui N
inclusiv 1 şi N).
Algoritmul Winograd cuprinde, principial, trei etape:
1°se calculează reziduurile polinoamelor X(z) şi H(z):
X ( k ) ( z ) = RM (k ) ( z ) [ X ( z )] = X ( z )mod M ( k ) ( z ), k = 0, K − 1
H ( k ) ( z ) = RM (k ) ( z ) [ H ( z ) ] = H ( z )mod M ( k ) ( z ), k = 0, K − 1
2°se calculează reziduurile polinomului Y(z):
Y ( k ) ( z ) = X ( z ) H ( z )mod M ( k ) ( z ) = RM (k ) ( z ) { X ( k ) ( z ) H ( k ) ( z )}, k = 0, K − 1
3°se calculează polinomul convoluţiei Y ( z ) din reziduurile sale Y ( k ) ( z ) , pe baza
teoremei chineze a resturilor:
 K −1 
Y ( z ) =   Y ( k ) ( z )S ( k ) ( z )  mod M ( z )
 k =0 
unde S ( k ) ( z ) pot fi găsite tabelate pentru diverşi N (valorile coeficienţilor acestor
polinoame pot fi stocate într-o memorie de date).
Numărul minim de multiplicări necesare pentru a realiza o convoluţie ciclică de
ordinul N, este 2 N − D( N ) , unde D( N ) reprezintă numărul de divizori ai lui N.

5. Aplicaţii rezolvate

Exemplul 1. Să se calculeze convoluţia liniară între secvenţele:


x = { x[0], x[1], x[2]}  X ( z ) = x[0] + x[1]z −1 + x[2]z −2 , cu Lx = 3
h = {h[0], h[1]}  H ( z ) = h[0] + h[1]z −1 , cu Lh = 2 .
∞ Lx + Lh − 2
Conform definiţiei: y[n ] =  x[k ] ⋅ h[n − k ] = 
k =−∞ k =0
x[k ] ⋅ h[n − k ] , rezultă că:

y = { y[0], y[1], y[2], y[3]} = { x[0]h[0], x[0]h[1] + x[1]h[0], x[1]h[1] + x[2]h[0], x[2]h[1]}
Folosind transformatele Z X ( z ) şi H ( z ) ale secvenţelor, rezultă:

47
PNS Lucrarea 4 Convoluţia și corelația secvenţelor

Y ( z ) = X ( z ) H (z) = (x[0] + x[1]z −1 + x[2]z −2 )(h[0] + h[1]z −1 ) =


= x[0]h[0] + ( x[0]h[1] + x[1]h[0]) z −1 + ( x[1]h[1] + x[2]h[0]) z −2 + x[2]h[1]z −3

Funcţia Matlab pentru calculul convoluţiilor liniare este conv.m şi realizează


de fapt, produsul polinoamelor X ( z ) şi Y ( z ) . De exemplu, pentru x={1,2,3} şi
h={1,1} rezultă:
y[0] = 1 y[1] = 3 y[2] = 5 y[3] = 3
iar verificarea în Matlab este sub forma următorului program:

%Program P4_1
clear;
x=[1 2 3]; h=[1 1];
disp('Convolutia liniara a secventelor x si h');
y=conv(x,h)

Operaţia inversă convoluţiei este deconvoluţia, care realizează împărţirea cu


rest a polinoamelor. Comanda Matlab deconv de mai jos va avea ca rezultat secvenţa
h={1,1}.

disp('rezultatul deconvolutiei este:');


h1=deconv(y,x)

Exemplul 2. Să se calculeze convoluţia ciclică între secvenţele:


x = {x[0], x[1]}  X ( z ) = x[0] + x[1] ⋅ z , cu N=2
h = {h[0], h[1]}  H ( z ) = h[0] + h[1] ⋅ z
N −1
Conform definiţiei yc [n ] =  x[k ] ⋅ h[n − k ]( N ) , rezultă că:
k =0

yc = { y[0], yc [1]} = {x[0]h[0] + x[1]h[1], x[0]h[1] + x[1]h[0]}


Folosind reprezentările polinomiale Yc ( z ) = X ( z ) ⋅ H ( z ) mod ( z 2 − 1) , adică:
( x[0] + x[0]z ) ⋅ ( h[0] + h[1]z ) mod( z 2 − 1) ,
rezultă ca rest al împărţirii polinomului
h[1] x[1]z 2 + ( h[0]x[1] + h[1]x[0]) z + h[0] x[0] la ( z 2 − 1) ,
polinomul convoluţiei ciclice fiind
Yc ( z ) = (h[0]x[1] + h[1]x[0]) z + h[0]x[0] + h[1] x[1] .
Un exemplu de program MATLAB, care calculează convoluţia ciclică,
cuprinde comenzile:

%Program P4_2
clear;
x=[1 2]; h=[1 3]; disp('iesirea calculata cu circonv');
yc=circonv(x,h,2) %(vezi circonv.m)

48
PNS Lucrarea 4 Convoluţia și corelația secvenţelor

şi rezultă yc = {7,5} , adică Yc ( z ) = 0 ⋅ z 2 + 5z + 7  yc = {7,5} .

Funcţia Matlab circonv are sintaxa:


yc=circonv(x,h,N); returnează rezultatul convoluţiei circulare în N puncte dintre
secvenţele x şi h.

Observaţie. În reprezentarea polinomială, programul Matlab necesită ordonarea


coeficienţilor în ordine descrescătoare a puterilor variabilei.

Exemplul 3. Calculul convoluţiei ciclice între două secvenţe x şi h , periodice,


de aceeaşi perioadă N, utilizând TFD, este realizat de următoarea secvenţă de comenzi
Matlab:

%Program P4_3
clear;
N=2; x=[1 2]; h=[1 3];
X=fft(x,N); H=fft(h,N);
Yc=X.*H; disp('iesirea calculata cu DFT=');
yc=ifft(Yc)
adică yc = {7,5} .
Observaţie. Dacă cele două secvenţe au lungimi mai mici decât numărul de puncte în
care trebuie calculată convoluţia circulară, N, secvenţele vector x şi h se completează
cu zerouri până la lungimea dorită.

Exemplul 4. Să se calculeze corelaţia liniară pentru secvenţele:


x = {x[0], x[1]} şi h = {h[0], h[1], h[2]} cu Lx = 2, Lh = 3 .
Pe baza definiţiei, corelaţia lor liniară este în una din formele:
 2

rxh =  rxh [n ] =  x[k + n ]h[k ] = x[n ]h[0] + x[1 + n ]h[1] + x[2 + n ]h[2] , pentru
 k =0 
n = {−2, −1, 0, 1} , astfel că rxh = {rxh [−2], rxh [ −1], rxh [0], rxh [1]} , cu rxh [−2] = x[0]h[2] ,
rxh [−1] = x[0]h[1] + x[1]h[2] , rxh [0] = x[0]h[0] + x[1]h[1] , iar rxh [1] = x[1]h[0] .
Similar
 1

rhx =  rhx [n ] =  h[k + n ] x[k ] = h[n ] x[0] + h[1 + n ] x[1] , pentru n = {−1,0, 1, 2} , astfel că
 k =0 
rhx = {rhx [ −1], rhx [0], rhx [1], rhx [2]} , cu rhx [−1] = h[0] x[1] , rhx [0] = h[0] x[0] + h[1] x[1] ,
rhx [1] = h[1] x[0] + h[2]x[1] , iar rhx [2] = h[2] x[0] .
De exemplu, pentru secvenţele x = {1,1} şi h = {1, 2,3} rezultă:
rxh [−2] = 3, rxh [−1] = 5, rxh [0] = 3, rxh [1] = 1, rxh [2] = 0 şi
rhx [ −2] = 0, rhx [−1] = 1, rhx [0] = 3, rhx [1] = 5, rhx [2] = 3 .
Se observă că se verifică relaţia rxh [n ] = rhx [ −n ] .

49
PNS Lucrarea 4 Convoluţia și corelația secvenţelor

Funcţia Matlab pentru calculul corelaţiilor liniare este xcorr.m. Un exemplu


de program Matlab, care calculează corelaţia liniară între două secvenţe x şi h, este
următorul:

%Program P4_4
clear;
x=[1 1]; h=[1 2 3];
disp('Corelatia liniara a secventelor x si h');
rxh=xcorr(x,h)
rhx=xcorr(h,x)

Dacă secvenţele x şi h sunt considerate periodice, de perioadă N = 3 , corelaţia


lor ciclică va fi în una din formele următoare:

 2

rdg′ =  rxh′ [n ] =  x ( k + n )( N )  h[k ] = x[n ]h[0] + x (1 + n )( N )  h[1] + x ( 2 + n )( N )  h[2] ,
 k =0
      
pentru n = {0, 1, 2} sau
 1

rgd′ =  rhx′ [n ] =  h ( k + n )( N )  x[k ] = h[n ]x[0] + h (1 + n )( N )  x[1] + h ( 2 + n )( N )  x[2] ,
 k =0
      
pentru n = {0, 1, 2} , astfel că
rxh′ = {rxh′ [0], rxh′ [1], rxh′ [2]} , cu rxh′ [0] = x[0]h[0] + x[1]h[1] + x[2]h[2] ,
rxh′ [1] = x[1]h[0] + x[2]h[1] + x[0]h[2] , iar rxh′ [2] = x[2]h[0] + x[0]h[1] + x[1]h[2] şi
rhx′ = {rhx′ [0], rhx′ [1], rhx′ [2]} , cu rhx′ [0] = h[0] x[0] + h[1] x[1] + h[2]x[2] ,
rhx′ [1] = h[1] x[0] + h[2]x[1] + h[0] x[2] , iar rhx′ [2] = h[2]x[0] + h[1] x[1] + h[0] x[2] .
Se observă că se verifică relaţia rxh′ [n ] = rhx′ ( −n )( N )  = rhx′ [ N − n ] , adică
 
rxh′ [0] = rhx′ ( 3 − 0 )(3)  = rhx′ [0] , rxh′ [1] = rhx′ ( 3 − 1)(3)  = rhx′ [2] şi rxh′ [2] = rhx′ ( 3 − 2 ) (3)  = rhx′ [1] .
     

Exemplul 5. Să se calculeze convoluţia liniară a secvenţelor:


x = { x[0], x[1]}  X ( z ) = x[0] + x[0]z , cu Lx = 2
h = {h[0], h[0]}  H ( z ) = h[0] + h[1]z , cu Lh = 2
prin metoda Cook-Toom, folosind interpolarea Lagrange.
1° Fie setul de Lx + Lh − 1 = 3 valori reale: β 0 = 0, β1 = 1 şi β 2 = ∞ .
2° Să evaluează polinoamele X ( z ) şi H ( z ) pentru z = β i :
z = β 0 = 0  X (0) = x[0] ; H (0) = h0
z = β1 = 1  X (1) = x[0] + x[1] ; H (1) = h[0] + h[1]
z = β 2 = −1  X ( −1) = x[0] − x[1] ; H ( −1) = h[0] − h[1]
3° Rezultă că :
Y (0) = X (0) H (0) = x[0]h[0]
Y (1) = X (1) H (1) = ( x[0] + x[1])( h[0] + h[1])

50
PNS Lucrarea 4 Convoluţia și corelația secvenţelor

Y ( −1) = X ( −1) H ( −1) = ( x[0] − x[1])( h[0] − h[1])


4° Folosind relaţia de interpolare Lagrange, rezultă:
( z − 1)( z + 1) z ( z + 1) z ( z − 1)
Y ( z ) = y[0] + y[1]z + y[2]z 2 = Y (0) + Y (1) + Y ( −1)
−1 2 2
= x[0]h[0] + ( x[0]h[1] + x[1]h[0]) z + x[1]h[1]z 2
Prin identificare:
y = { y[0], y[1], y[2]} = { x[0]h[0], x[0]h[1] + x[1]h[0], x[1]h[1]}

Observaţie. Algoritmul necesită doar 3 multiplicări: X (0) H (0), X (1) H (1) şi


X ( −1) H ( −1) şi 3 adunări/scăderi: x[0] + x[1], Y (1) − Y (0) − Y ( −1) , considerând că
( h[0] + h[1]) poate fi precalculat. Calculul direct al convoluţiei ar necesita 4
multiplicări şi o adunare.

Exemplul 6. Să se realizeze descompunerea polinomului M ( z ) = z N − 1 în


factori de polinoame ireductibile.
Rezultă: M ( z ) = z N − 1 = ∏ M ( d ) ( z ) , produsul fiind efectuat pentru toţi divizorii
d N

d ai lui N , inclusiv pe 1 şi pe N , iar M ( d ) ( z ) va reprezenta în acest caz polinomul


ciclotomic de ordinul ,, d ”. Un alt mod de a scrie descompunerea lui M ( z ) este:
j 2π
M ( z) = z N − 1 = ∏
i ≤ d ,( i ,d ) =1
( z − Wdi ) cu Wd = e d

unde ( i, d ) reprezintă Cel Mai Mare Divizor Comun (CMMDC) al numerelor i şi d .


De exemplu, polinomul (z 6
− 1) se descompune în 4 polinoame ireductibile,
corespunzătoare divizorilor d = 1, 2,3 şi 6 ai lui N = 6 , astfel că:
M (1) ( z ) = ( z − W11 ) = z − e j 2π 1 = z − 1
M (2) ( z ) = ( z − W21 ) = z − e j 2π 2 = z + 1
M (3) ( z ) = ( z − W31 )( z − W32 ) = z 2 + z + 1
M (6) ( z ) = ( z − W61 )( z − W65 ) = z 2 − z + 1 .
Observaţie. O proprietate a polinoamelor ciclotomice ale lui ( z N − 1) este că până la
ordinul N = 105 au numai coeficienţi egali cu ±1 sau 0.

Exemplul 7. Teorema chineză a restului pentru polinoame poate fi formulată


astfel: se poate determina un polinom C ( z ) dacă se cunosc resturile împărţirii lui în
raport cu un set de polinoame M ( i ) ( z ) , relativ prime între ele. Fie deci cunoscute:
C ( ) ( z ) = RM ( z ) [C ( z )] = C ( z ) mod M ( i ) ( z ), i = 0, K
i
(i )

atunci polinomul C ( z ) se poate reface din relaţia:


K
C ( z ) =  C ( i ) ( z )n ( i ) ( z )m ( i ) ( z ) mod M ( z )
i =0

51
PNS Lucrarea 4 Convoluţia și corelația secvenţelor

unde
K
M ( z) = ∏ M (i ) ( z )
i =0

m ( z ) = M ( z ) M (i ) ( z )
(i )

iar n ( i ) ( z ) este polinomul soluţie a ecuaţiei:


n(i ) ( z ) = m(i ) ( z ) + N (i ) ( z ) M (i ) ( z ) = 1
sau, echivalent, n ( i ) ( z ) rezultă din relaţiile:
n ( i ) ( z )m ( i ) ( z ) = 1 mod M ( i ) ( z )

Exemplul 8. Să se calculeze, cu ajutorul algoritmului Winograd, convoluţia


ciclică a secvenţelor:

{ yc [0], yc [1], yc [2], yc [3]} = {x[0], x[1], x[2], x[3]} ⊗4 {h[0], h[1], h[2], h[3]}
care este reprezentată polinomial prin:
Yc ( z ) = X ( z ) H ( z )mod ( z 4 − 1)
unde
X ( z ) = x[0] + x[1]z + x[2]z 2 + x[3]z 3
H ( z ) = h[0] + h[1]z + h[2]z 2 + h[3]z 3
Yc ( z ) = yc [0] + yc [1]z + yc [2]z 2 + yc [3]z 3
Polinomul ( z 4 − 1) se descompune în 3 polinoame ciclotomice:
(z 4
− 1) = M (1) ( z ) M (2) ( z ) M (4) ( z ) = ( z − 1)( z + 1)( z 2 + 1)
Se calculează polinoamele rest X ( i ) ( z ) în raport cu M ( i ) ( z ) :
X (1) ( z ) = X ( z ) mod M (1) ( z ) = X ( z )mod ( z − 1) = x[0] + x[1] + x[2] + x[3]
X (2) ( z ) = X ( z ) mod M (2) ( z ) = X ( z )mod ( z + 1) = x[0] − x[1] + x[2] − x[3]
X (4) ( z ) = X ( z ) mod M (4) ( z ) = X ( z )mod ( z 2 + 1) = ( x[0] − x[2]) + ( x[1] − x[3]) z
Similar, se calculează şi polinoamele rest H ( i ) ( z ) :
H (1) ( z ) = H ( z )mod ( z − 1) = h[0] + h[1] + h[2] + h[3]
H (2) ( z ) = H ( z )mod ( z + 1) = h[0] − h[1] + h[2] − h[3]
H (4) ( z ) = H ( z )mod ( z 2 + 1) = ( h[0] − h[2]) + ( h[1] − h[3]) z
Rezultă că reziduurile polinomului convoluţie vor fi:
Y (1) ( z ) = X (1) ( z ) H (1) (z) mod M (1) ( z ) = (x[0] + x[1] + x[2] + x[3])( h[0] + h[1] + h[2] + h[3])
Y (2) ( z ) = X (2) ( z ) H (2) (z) mod M (2) ( z ) = (x[0] − x[1] + x[2] − x[3])( h[0] − h[1] + h[2] − h[3])
Y (4) ( z ) = X (4) ( z ) H (4) (z) mod M (4) ( z ) = (x[0] − x[2])( h[0] − h[2]) + ( x[1] − x[3])( h[1] − h[3]) +
{
+ ( x[0] − x[2]) + ( x[1] − x[3])  ( h[0] − h[2]) + ( h[1] − h[3]) 
− ( x[0] − x[2])( h[0] − h[2]) − ( x[1] − x[3])( h[1] − h[3])} z

52
PNS Lucrarea 4 Convoluţia și corelația secvenţelor

În final, se determină polinomul convoluţie Y ( z ) , din reziduurile sale Y ( i ) ( z ) , pe baza


teoremei chineze a resturilor. Rezultă astfel:
Yc ( z ) =  S (1) ( z )Y (1) ( z ) + S (2) ( z )Y (2) ( z ) + S (4) ( z )Y (4) ( z )  mod ( z 4 − 1)
unde
1 3 2
S (1) ( z ) = z + z + z +1
4
1
S (2) ( z ) = ( − z 3 + z 2 − z + 1)
4
1
S (4) ( z ) = − ( z 2 − 1)
2

6. Aplicaţii propuse

1. Se dau secvenţele:
n − 1, dacă n = 0,1, 2,3, 4
x [n] = 
 0, în rest
n + 1 , dacă n = 0,1, 2
h [n] = 
0 , în rest
Calculaţi analitic convoluţia liniară y [ n ] = x [ n ] ∗ h [ n ] , corelaţia liniară rxh [ n ] şi
autocorelaţia rxx [ n ] şi verificaţi rezultatele în Matlab, folosind funcţiile conv.m şi
xcorr.m.

2. Se dau secvenţele:
1, dacă n = 0,1, 2
x [n] = 
0, în rest
5 − n , dacă n = 0,1, 2,3, 4
h [n] = 
0 , în rest
Calculaţi analitic convoluţia lor ciclică pentru N = 6 şi verificaţi rezultatul în
Matlab, folosind atât funcţia circonv.m, cât și algoritmul cu Transformata Fourier
Discretă (vezi Programul P4_3).

3. Se dau secvenţele:
1, dacă n = 0,1, 2,3
x [n] = 
0, în rest
 4 − n, dacă n = 0,1, 2,3
h [n] = 
 0, în rest
a) calculaţi analitic convoluţiile lor liniare şi ciclice (în 4 puncte) ale celor două
secvenţe;
b) determinaţi valoarea minimă pentru perioada N , pentru care valorile celor
două tipuri de convoluţie sunt egale. Verificaţi rezultatul în Matlab cu ajutorul
Transformatei Fourier Discrete.

53
PNS Lucrarea 4 Convoluţia și corelația secvenţelor

4. Se dau secvenţele:
x [n] = u [n] − u [n − N ]
h [n] = α n ⋅ u [n]
Pentru cazurile ( N = 50; α = 0,5 ) şi ( N = 50; α = 1 ):
a) schiţaţi pe caiet forma celor două semnale discrete
b) generaţi cu ajutorul programului Matlab cele două secvenţe pe suportul
n = 0,99 şi calculaţi convoluţia lor liniară.
c) reprezentaţi grafic secvenţele x[n ], h[n ] , precum şi secvenţa corespunzătoare
convoluției liniare rezultată la punctul b).

54

S-ar putea să vă placă și