lab convolutie

26
Academia Tehnică Militară – Laborator Prelucrarea Numerică a Semnalelor Academia Tehnică Militară Laborator: Prelucrarea Numerică a Semnalelor 1

Upload: diana-moraru

Post on 24-Nov-2015

83 views

Category:

Documents


4 download

TRANSCRIPT

umerica a semnalelor

Academia Tehnic Militar Laborator Prelucrarea Numeric a Semnalelor

Academia Tehnic Militar

Laborator: Prelucrarea Numeric a Semnalelor

Tema: Convoluia i CorelaiaRealizat de: Std. Sg. ofinei MihaiGrupa: E213 C

Interpretarea polinomial a convoluiei liniare i ciclice

Operaiile de convoluie liniar i ciclic, precum i de deconvoluie se pot interpreta prin prisma operaiilor cu polinoame. S consideram secvenele 1D i polinoamele asociate de mai jos:

Conform definiiei: . Se obine prin urmare:

Aceii coeficieni pot fi obinui ca urmare a produsului polinoamelor X(z) i H(z).

Functia conv din MATLAB este folosit pentru calculul convoluiilor liniare 1D. Exemplu:Convolutia secvenelor x={1,2,3} i h={1,1}: x=[1,2,3]; h=[1,1]; [y]=conv(x,h);

Deconvolutia poate fi realizat cu functia MATLAB devonv care poate fi vzut ca rezultatul mpririi cu rest a polinoamelor Y si X. [q,r]=deconv(y,x);

i convoluia ciclica admite o interpretare polinomial.

Conform definiiei: ,se obine:

Acelai rezultat se obine ca rest al operaiei Y(z)=X(z)H(z) mod (z2-1), adic ca rest al mpririi prin (z2-1).Exemplu convoluie ciclica 1D:x=[1,2];h=[3,4];m=[1,0,-1];[q,y]=deconv(flipr(conv(x,h)),m);

Aceleai consideraii sunt valabile i n cazul secvenelor 2D. Astfel, n cazul convoluiei liniare:

Comenzi MATLAB pentru calculul elementelor:x=[0,1,2; 3,4,5];h=[1,0,1; 1,0,1];y=conv2(x,h);

Convoluia semnalelor x[n], y[n] este semnalul:

Prin transformata Fourier, convoluia a dou semnale este transformat n produs al transformatelor Fourier:

Convoluia ca i proprietate a transformatei Z:

Convoluie periodicPentru semnalele N-periodice se definete o operaie specific de convoluie, care in n considerare doar cte o perioada a semnalelor.Convoluia periodic a semnalelor N-periodice este semnalul:

Seria Fourier discret asociat convoluiei a dou semnale este produsul (la nivel de element) al seriilor Fourier ale semnalelor:

Seria Fourier discret ascociat semnalului

Convoluia circularConcoluia circular a semnalelor x[n] i y[n], ambele cu suport finit 0:N-1, este semnalul:

Transformata Fourier discret a convoluiei ciclice a dou semnale cu suport 0:N-1 este produsul (la nivel de element) al TFD ale celor dou semnale: .

Teorema lui PlancherelFie f(x) si g(x) integrabile i fie transformatele lor Fourier. Dac f(x) i g(x) sunt ptrat integrabile, atunci avem teorema lui Parseval: ,n care bara de desupra denot complex conjugata. Teorema lui Plancherel, care este echivalent cu teorema lui Parseval, stabilete c:

Teorema lui Planchenel face posibil definirea transformatei Fourier pentru funcii din L2(R). Interpretarea teoremei lui Planchenel este aceea c transformarea Fourier conserv energia.

Teorema corelaiei

Dac atunci

Relaia dintre convoluie i corelaie

Exemplu de calcul al produsului de convoluie liniar digital: x(n)={2,2,2} h(n)={1,2,3,4}

N+M-1 elemente

y(0)=12=2 y(1)=22+12=6 y(2)=32+22+12=12

y(3)=42+32+22=18 y(4)=42+32=14 y(5)=42=8

=>y(n)={2,6,12,18,14,8}

Exemplu de calcul al produsului de convoluie circular:x(n) = {0; 0,7; 1; 0,7; 0; -0,7; -1; -0,7}; h(n) = {0,1; 0,35; 0,45; 0,21; -0,04};

=>y(n)={0,86; 0,44; -0,23; -0,77; -0,86; -0,44; 0,23; 0,77}

Exemplu de calcul al corelaiei x(n)={2,2,2} h(n)={1,2,3,4}

y(-2)=12=2y(-1)=12+22=6 y(0)=12+22+32=12 y(1)=22+32+42=18

y(2)=32+42=14 y(3)=42=8

=>y(n)={2; 6; 12; 18; 14; 8}

Exemplu pentru a verifica teorema lui Plancherel:

x1(n)= 2n-1,n[1 9]x2(n)=1, -2, 3, -2, 1, 0, 0, ...

w=-pi:2*pi/255:pi;x1=[-1 3 5 7 8 11 13 15 17];x2=[1 -2 3 -2 1];y=conv(x1,x2);h1=freqz(x1,1,w);h2=freqz(x2,1,w);hp=h1.*h2;h3=freqz(y,1,w);subplot(2,2,1);plot(w/(2*pi),abs(hp));gridtitle('Produsul spectrelor de amplitudine');subplot(2,2,2);plot(w/(2*pi),abs(h3));gridtitle('Spectrul de aplitudine a rezultatului convolutiei');subplot(2,2,3);plot(w/(2*pi),angle(hp));gridtitle('Suma spectrelor de faza');subplot(2,2,4);plot(w/(2*pi),angle(h3));gridtitle('Spectrul de faza a rezultatului convolutiei');

Calculul convoluiilor cu ajutorul transformatei FourierConvoluia ciclic a dou secvene, x si h, de aceeai perioad N, utiliznd TDF1Dx=[1,2];h=[3,4];X=fft(x);H=fft(h);Y=X.*H;Y=abs(ifft(Y));

Convoluie ciclic 2D folosind aceeai medot dintre secvenele:x={xn1,n2 , n1=0,1; n2=0,1,2 } = [0,1,2; 3,4,5]h={hn1,n2 , n1=0,1; n2=0,1,2 } = [1,0,1; 1,0,1]x=[1,2,3; 4,5,6];h=[1,0,1;1,0,1];X=fft2(x);H=fft2(h);Y=X.*H;y=abs(ifft2(Y));

Mecanismul de calcul al convoluieiCalcularea pas cu pas a convoluiei a dou secvene discrete. Originea celor dou funcii este presupus la n=0.x=ones(3,1);h=exp(-[1:10]);Ly=length(x)+length(h)-1;lh=length(h);lx=length(x);y=zeros([Ly,1]);xf=fliplr(x);disp(['Apasati orice tasta pentru a calcula convolutia ']);for i=1:1:Ly indlo=max(0,i-lx); indhi=min(i-1,lh-1); for j=indlo:indhi y(i)=h(j+1)*x(i-j)+y(i); end subplot(311);stem(-lx+i:1:i-1,xf);ylabel('x in oglinda'); lim1=max(lh,lx); lim2=min(min(min(x),min(h)),0); lim3=max(max(x),max(h)); axis([-lx,lim1,lim2,lim3]); subplot(312);stem(0:1:lh-1,h);ylabel('h'); axis([-lx,lim1,lim2,lim3]); subplot(313);stem(0:1:Ly-1,y);ylabel('y'); pauseend

Convoluia, corelaia i filtrajul adaptatOperaia de convoluie realizat de un filtru adaptat este echivalent cu corelaia dintre semnalul cu care acesta este adaptat i semnalul de intrare.Se consider semnalul de intrare: x(n)= 1, -2, 3, -4, 3, 2, 1, 0, i filtrul adaptat caracterizat prin funcia pondere: h(n)= 3, 2, 1, -2, 1, 0, -4, 0, 3, 0, h=[3 2 1 -2 1 0 -4 0 3];x=[1 -2 3 -4 3 2 1];xa=fliplr(h);y1=conv(h,x);y2=filter(h,1,[x zeros(1,length(x)+1)]);y3=xcorr(x,xa); subplot(311);stem(y1); ylabel('Amplitudine');title('Iesire obtinuta prin convolutie');grid; subplot(312);stem(y2);ylabel('Amplitudine');title('Iesire obtinuta prin filtraj'); grid; subplot(313);stem(y3);xlabel('Index temporal n'); ylabel('Amplitudine');title('Iesire obtinuta prin corelatie');grid;

Convoluie circular 1N N=7; x=ones(7,1); h=[0 1 2 3 2 1 0] lh=length(h); lx=length(x); y=zeros([N,1]); xf=fliplr(x); disp(['Apasati pe orice tasta pentru a calcula convolutia']); temp_h=h; for i=1:1:N temp_h=[h(1:i) h(end:-1:i+1)]; for j=1:N y(i)=temp_h(j)*x(j)+y(i); end subplot(311);stem(0:N-1,xf); ylabel('x'); grid on; axis([0,N+1,0,1]); subplot(312);stem(0:N-1,temp_h);ylabel('h in oglinda');grid on; axis([0,N+1,0,3]); subplot(313);stem(0:N-1,y);ylabel('y');grid on; axis([0,N+1,0,9]); pause end

Convoluie circular 2N

clear all N=14;x=[ones(7,1); zeros(7,1)];h=[0 1 2 3 2 1 0 0 0 0 0 0 0 0]lh=length(h);lx=length(x);y=zeros([N,1]);hf=fliplr(h);disp(['Apasati pe orice tasta pentru a calcula convolutia']); for i=1:1:N temp_h=[hf(end-i+1:1:end) hf(1:end-i)]; for j=1:N y(i)=temp_h(j)*x(j)+y(i); end subplot(311);stem(0:N-1,x); ylabel('x'); grid on; axis([0,N+1,0,1]); subplot(312);stem(0:N-1,temp_h);ylabel('h in oglinda');grid on; axis([0,N+1,0,3]); subplot(313);stem(0:N-1,y);ylabel('y');grid on; axis([0,N+1,0,9]); pause end

19