Conceitos de Sinais e Sistemas Mestrado em Ciências da Fala e da Audição António Teixeira AT 2006 1 • Convolução – Aula AT 2006 para sistemas discretos • Representação de sistemas por equações diferença • MATLAB – – conv() filter() 2 Convolução Ver secção 5.6.1 de “Techniques in Speech Acoustics” por J. Harrington & S. Cassidy e secção 2.2.2 de “Sinais e Sistemas” de Isabel Lourtie AT 2006 3 Sinais como somas de impulsos • Qualquer sinal discreto pode ser representado por uma soma pesada de impulsos – ex: –seria: x[n]= 1 x impulso em t=1 + 2 x impulso em t=2 + 3 x impulso em t=3 –ou: x[n]= 1 [n-1] + 2 [n-2] + 3 [n-3] AT 2006 4 Caso geral • Generalizando: – qualquer sinal discreto x[n] pode ser representado em função de impulsos unitários através da expressão x[k] [n-k] x[n]= AT 2006 5 Sistemas lineares e invariantes no tempo • Como resultado das propriedades de invariância temporal e linearidade tem-se: – sistema invariante • [n] h[n] = > [n-k] h[n-k] – sistema linear • k[n]= [n-k] hk[n] = h[n-k] = > = > x[n] = a k k[n] y[n]= k hk[n] convolução como ak = x[k] temos: y[n]= AT 2006 a x[k] h[n-k] = x[n] * h[n] 6 Cálculo da convolução y[n]= x[k] . h[n-k] • Para obter a saída no instante n é necessário realizar as seguintes 4 operações – determinar a reflexão em relação à origem da resposta impulsional h[k] obtendo z[k]=h[-k] – atrasar o sinal z[k] de n unidades, isto é do valor correspondente ao instante, • obtendo-se z[k-n]=h[n-k] – multiplicar ponto a ponto h[n-k] pela entrada x[k] – somar todos os pontos AT 2006 7 Exemplo • dconvdemo AT 2006 8 Propriedades da convolução • Comutativa x[n] * h[n] = h[n] * x[n] • Associativa x[n] * ( h1[n] * h2[n] ) = ( x[n] * h1[n] ) * h2[n] • Distributiva x[n] * (h1[n] + h2[n]) = x[n] * h1[n] + x[n] * h2[n] AT 2006 9 Convolução em MATLAB • Existe a função conv () • exemplo de utilização x=[1 1 1 1] h=[3 2 1] y=conv(x,h) y2=conv(h,x) subplot(221); stem(x) subplot(222); stem(h) subplot(223); stem(y) subplot(224); stem(y2) AT 2006 10 • O processo de convolução multiplica as amostras presente e passadas do sinal de entradas por um factor por forma a obter a saída • Este processo pode ser aplicado também a amostras passadas do sinal de saída, tendo-se em vez de y=x *b , em que b é h[n] a situação mais geral y *a=x*b AT 2006 11 • Se b=1 temos y*a=x ou seja a[0] y[n]+a[1] y[n-1]+a[2] y [n-2]+ ...+a[p] y[n-p]=x[n] Exemplo: x=[4 2 1 3] a=[0.5 0.2] % note que se assume a[0]=1 y[0]= x[0]-0.5 y[-1] – 0.2 y[-2] = ... = x[0] = 4 y[1]= x[1]-0.5 y[0] – 0.2 y[-1] = 2 – (0.5 x 4) – 0 = 0 y[2]= ... = 0.2 y[3]= ... y[n]= x[n] - 0.5 y[n-1] – 0.2 y[n-2] AT 2006 12 em MATLAB • Tendo os vectores de coeficientes a e b obtem-se a saída utilizando o comando filter() y=filter(b,a,x) % note a ordem b,a ! Exemplo (anterior): x=[4 2 1 3 zeros(1,100)] a=[1 0.5 0.2] zoom y=filter(1,a,x) stem(y) verificando a resposta calculada manualmente .... >> y(1:5) ans = 4.0000 0 0.2000 2.9000 -1.4900 AT 2006 13 • Resposta impulsional deste último sistema x=[1 zeros(1,100)] a=[1 0.5 0.2 ] y=filter(1,a,x) stem(y) AT 2006 14 Função de transferência • Os factores multiplicativos aplicados ao sinal de entrada e/ou à saída (em instantes anteriores) definem a chamada função de transferência do sistema – porque estes coeficientes transformam um sinal de entrada num sinal de saída – são os responsáveis por deixar no sinal as marcas do sistema no sinal AT 2006 15 Relação com a produção de voz • Segundo a teoria fonte filtro: – o sinal de voz resulta da passagem do sinal gerado pela(s) fonte(s) através do sistema/filtro constituído pelo tracto vocal • o nosso sinal de entrada x será a excitação glotal, fonte de ruído ou ambos • o a e b representarão o tracto • Os pesos do vector a estão directamente relacionados com as frequências das formantes – Um modelo adequado para as vogais será y*a=x (a[0]=1) – Para sons como as nasais temos ressonâncias e antirresonâncias , um modelo mais apropriado será y*a = b* x (a[0]=1) • Este assunto será retomado ... AT 2006 16 TPC • Leitura da secção 5.6.1 de Harrington & Cassidy AT 2006 17