Você está na página 1de 19

Soma de Convolução

A resposta ao impulso é a saída de um sistema LTI devido a uma entrada de impulso aplicada
no instante t=0 ou n=0. A resposta ao impulso caracteriza de maneira completa o
comportamento de qualquer sistema LTI.
Se a entrada em um sistema linear for expressa como uma superposição ponderada de
impulsos deslocados no tempo, a saída será uma superposição ponderada da resposta do
sistema a cada impulso deslocado no tempo. Se o sistema também for invariante no tempo, a
resposta do sistema a um impulso deslocado no tempo será uma versão deslocada no tempo
da resposta do sistema a um impulso. Por isso, a saída de um sistema LTI é dada por uma
superposição ponderada de respostas ao impulso deslocadas no tempo. Esta superposição
ponderada é chamada soma de convolução, para os sistemas de tempo discreto, e integral
de convolução, para sistemas de tempo contínuo.
Considere um sinal x[n] e a sequência de impulsos :

Valor do sinal em x[0]


Valor do sinal em x[k]

Logo podemos escrever que:

Exemplo gráfico ilustrando a representação de um sinal x[n] como uma soma ponderada de
impulsos deslocados no tempo.
Sinal escrito como soma de impulsos

clf;clear;clc;figure(1);
n = -4:5;
d1 = 2*gauspuls(n+2);
subplot(511);
stem(n,d1,'LineWidth',2)
ylabel('Amplitude')
title('x[-2] \delta[n+2]')
axis([-4.5 5.5 -0.1 2.1])
legend('x[-2]')
d2 = -2*gauspuls(n+1);
subplot(512);
stem(n,d2,'r','LineWidth',2)
ylabel('Amplitude')
title('x[-1] \delta[n+1]')
axis([-4.5 5.5 -2.1 0.1])
legend('x[-1]')

d3 = 2*gauspuls(n);
subplot(513);
stem(n,d3,'g','LineWidth',2)
ylabel('Amplitude')
title('x[0] \delta[n]')
axis([-4.5 5.5 -0.1 2.1])

Página 1 de Analise
axis([-4.5 5.5 -0.1 2.1])
legend('x[0]')

d4 = 2*gauspuls(n-1);
subplot(514);
stem(n,d4,'c','LineWidth',2)
ylabel('Amplitude')
title('x[1] \delta[n-1]')
axis([-4.5 5.5 -0.1 2.1])
legend('x[1]')

d5 = 1*gauspuls(n-2);
subplot(515);
stem(n,d5,'k','LineWidth',2)
xlabel('[n]')
ylabel('Amplitude')
title('x[2] \delta[n-2]')
axis([-4.5 5.5 -0.1 2.1])
legend('x[2]')

figure(2);
d = d1+d2+d3+d4+d5;
stem(n,d,'b','LineWidth',2)
xlabel('[n]')
ylabel('Amplitude')
title('x[n]')
axis([-4.5 5.5 -2.1 2.1])
%legend('x[2]')

Digamos que o operador H global denote o sistema ao qual a entrada x[n] é


aplicada.

Considerando Para um sistema LTI é possível


demonstrar que:

Desta forma, a saída de um sistema LTI é dada pela soma ponderada


de respostas ao impulso deslocadas no tempo. A soma nesta equação
é chamada soma de convolução e denotada pelo símbolo *.
Página 2 de Analise
é chamada soma de convolução e denotada pelo símbolo *.

Exemplo: Suponha que um sistema H do tipo LTI tenha a resposta ao


impulso h[n]. Determine a saída deste sistema em resposta à entrada
x[n].

Utilizando a linearidade e invariância no tempo. Podemos escrever a equação


de saída para y[n] para cada um dos impulsos de entradas de x[n], assim
temos:

Logo:

O sinal e o sistema também pode ser representado por vetores.


h => [1, 2, 1] x => [2, 3, -2] y=> [2 7 6 -1 -2]
Obs1. Os números em destaque se referem ao índice n=0
Obs2.O número de elementos em y é dado pela soma do número de
elementos em x e h menos um. Em geral, se o primeiro elemento de x
corresponder ao tempo , e o primeiro elemento de h, ao tempo
Página 3 de Analise
corresponder ao tempo , e o primeiro elemento de h, ao tempo
, o primeiro elemento de y corresponderá a

Exemplo 2.1 do Livro texto

clf;clear;clc;figure(1);
n = -4:4;
h = gauspuls(n+1)+2*gauspuls(n)+gauspuls(n-1);
subplot(311);
stem(n,h,'b','LineWidth',2)
ylabel('Amplitude')
xlabel('[n]');
title('h[n]')
nx = -4:4;
x = 2*gauspuls(nx)+3*gauspuls(nx-1)-2*gauspuls(nx-2);
subplot(312);
stem(nx,x,'r','LineWidth',2)
ylabel('Amplitude')
xlabel('[n]');
title('x[n]')
y = conv(x,h); %Avaliação da convolução
subplot(313);
tam = length(x)+length(h)-1; %Número de pontos da
convolução
inicio = n(1)+nx(1);%Valores iniciais dos vetores
m = inicio:tam-abs(inicio)-1;%Posição temporal da convolução
stem(m,y,'filled')
ylabel('Amplitude')
xlabel('[n]');
title('y[n]=x[n]*y[n]')

Obs. O MATLAB tem uma função chamada "conv" que avalia a convolução de
sinais de tempo discreto de duração finita. Se x e h forem vetores, o comando
y = conv(x,h) do MATLAB gera um vetor y que representa a convolução dos
sinais representados por x e h.

Exemplo 2.1 do Livro texto

%Implementação somente com valores válidos


clf;clear;clc;figure(1);
nh= [-1,0, 1];
h = [1, 2, 1];
nx= [0, 1, 2];
x = [2, 3, -2];
ny= [-1 0 1 2 3];%tam(ny)=tam(nh)+tam(nx)-1 com
inicio em: ny=nx+nh
y = conv(x,h);
subplot(311);
stem(nh,h,'b','LineWidth',2)
ylabel('Amplitude')
xlabel('[n]');
xticks(nh)
title('h[n]')
subplot(312);
stem(nx,x,'r','LineWidth',2)
ylabel('Amplitude')
xlabel('[n]');

Página 4 de Analise
xlabel('[n]');
xticks(nx)
title('x[n]')

subplot(313);
stem(ny,y,'filled')
ylabel('Amplitude')
xlabel('[n]');
xticks(ny)
title('y[n]=x[n]*y[n]')

Uma outra maneira de compreender a soma de convolução é utilizando a


equação de definição. Então:

Exemplo 2.1 do Livro texto

%Implementação com gráficos deslocados


clf;clear;clc;figure(1);
n= [-2 -1 0 1 2 3 4];
h = 2*[0 1 2 1 0 0 0];
subplot(411);
stem(n,h,'b','LineWidth',2)
ylabel('Amplitude')
xlabel('[n]');
xticks(n)
title('x[0] h[n] = 2 h[n]')
subplot(412);
h1 = 3*[0 0 1 2 1 0 0];
stem(n,h1,'r','LineWidth',2)
ylabel('Amplitude')
xlabel('[n]');
xticks(n)
title('x[1] h[n-1] = 3 h[n-1]')

subplot(413);
h2 = -2*[0 0 0 1 2 1 0];
stem(n,h2,'c','LineWidth',2)
ylabel('Amplitude')
xlabel('[n]');
xticks(n)
title('x[2] h[n-2] = -2 h[n-2]')

subplot(414);
h_t = h + h1 + h2;
stem(n,h_t,'k','LineWidth',2)
ylabel('Amplitude')
xlabel('[n]');
xticks(n)
Página 5 de Analise
xticks(n)
axis([-2 4 -2 7])
title('y[n]=x[n] * h[n]')

Poderemos visualizar a soma da convolução com os vetores.


[1, 2, 1] [1, 2, 1] [2, 4, 2]
[0 1, 2, 1] [0 1, 2, 1] [0 3, 6, 3]
[0 0 1, 2, 1] [0 0 1, 2, 1] [0 0 -2, -4, -2]
[2 7 6, -1, -2]

Também é possível representar a convolução invertendo e deslocando um dos


gráficos.

Exemplo 2.1 do Livro texto

%Implementação com gráfico invertido e deslocado


clf;clear;clc;figure(1);
n = [-6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6];
h = [0 0 0 0 0 1 2 1 0 0 0 0 0];
subplot(411);
stem(n,h,'b','LineWidth',2)
ylabel('Amplitude')
xlabel('[n]=[k]');
xticks(n)
title('Gráfico h[n]= h[k]')
subplot(412);
xn = [0 0 0 0 0 0 2 3 -2 0 0 0 0 ];
stem(n,xn,'r','LineWidth',2)
ylabel('Amplitude')
xlabel('[n]=[k]');
xticks(n)
title('x[n] = x[k]')

subplot(413);
x_inv = [0 0 0 0 -2 3 2 0 0 0 0 0 0 ];
stem(n,x_inv,'k','LineWidth',2)
ylabel('Amplitude')
xlabel('[k]');
xticks(n)
title('Sinal com FLIP => x[-k]')

subplot(414);
x_inv = [0 -2 3 2 0 0 0 0 0 0 0 0 0 ];
stem(n,x_inv,'b','LineWidth',2)
ylabel('Amplitude')
xlabel('[k]');
xticks(n)
title('Sinal com FLIP e SHIFT => x[-k+3]')

Página 6 de Analise
Mantem-se o h[k] estático e desloca-se o x[-k]. O valor da soma da convolução
em cada ponto n é obtido somando-se todos os valores do gráfico do
resultado.

y[-2]=0 y[-1]=2 y[0]=7

y[1]=6 y[2]=-1 y[3]=-2

Método da convolução de vetores (Wozny)


Coloca-se os valores de x[n] e h[n] na primeira linha e coluna respectivamente.
Multiplica-se linhas por colunas. Finalmente soma-se os diagonais. Para
encontrar o elemento n=0, destaca-se o elemento zero no x[n] e h[n]. Onde
eles se cruzarem será o elemento zero do y[n]

h[n]\x[n] 2 3 -2
1 2 3 -2

Página 7 de Analise
1 2 3 -2
2 4 6 -4
1 2 3 -2

Exercício do Livro:
2.1 Um sistema LTI de tempo discreto tem a resposta ao impulso h[n] descrita
como na figura P2.1(a). Use a linearidade e invariância no tempo para
determinar a saída do sistema y[n], se a entrada x[n] for:

h[n] => [1 3 2 -1 1]

a) Como , observa-se que só existe o x[0] e o x[1].


Assim, podemos escrever a equação da convolução como:

y[n] = x[0]h[n-0] + x[1]h[n-1] = 2h[n] - h[n-1]


Página 8 de Analise
y[n] = x[0]h[n-0] + x[1]h[n-1] = 2h[n] - h[n-1]

Soma da Convolução para sinais expressos por funções matemáticas


Exemplo 2.3 (página 93 do livro texto).
Um sistema LTI tem a resposta ao impulso dada por:
h[n] = u[n] - u[n - 10]
De termine a saída deste sistema quando a entrada for o pulso retangular
definido por:
x[n] = u[n - 2] - u[n - 7]

Página 9 de Analise
Nesta condição, o produto de todos os pontos do x[k] pelo h[n-k] dão
resultado igual a zero.

Nesta condição, o produto de todos os pontos do x[k] pelo h[n-k] não mais
dão resultado igual a zero. Para n=2, há um ponto do h[n-k] coincidente com
um ponto do x[k]. Logo podemos dizer que:
y[n] = 0, para n<2.

Página 10 de Analise
Aqui utilizaremos a fórmula da convolução para resolver o problema:

Neste intervalo tanto o x[k] quanto o h[n-k] são iguais a 1.


Sabemos que:

(aqui m = k - 2)

Aqui percebe-se que todos os pontos do x[k] fazem parte do cálculo.

Note que o final de um intervalo é o início do próximo.


Página 11 de Analise
Note que o final de um intervalo é o início do próximo.

Observe o novo intervalo:

(aqui m = k -n + 9)

Para este intervalo o produto é zero. Logo podemos dizer que:


y[n] = 0, para n .

Finalmente, podemos escrever que o resultado da soma da convolução é:

Página 12 de Analise
Exemplo 2.3 do Livro texto

clf;clear;clc;figure(1);
% Geração da resposta ao impulso h[n]
n = -5:20;
h= [zeros(1,5) ones(1,10) zeros(1,11)];
subplot(311);
stem(n,h,'b','LineWidth',2); grid on;
ylabel('Amplitude')
xlabel('[n]');
title('h[n] = u[n] - u[n-10]')
% Geração do sinal x[n]
x= [zeros(1,7) ones(1,5) zeros(1,14)];
subplot(312);
stem(n,x,'r','LineWidth',2); grid on;
ylabel('Amplitude')
xlabel('[n]');
title('x[n] = u[n - 2] - u[n - 7]')
y = conv(x,h); %Avaliação da convolução
subplot(313);
tam = length(x)+length(h)-1; %Número de pontos da convolução
inicio = n(1)+n(1);%Valores iniciais dos vetores
m = inicio:tam-abs(inicio)-1;%Posição temporal da convolução
stem(m,y,'filled','k'); grid on;
axis([0 17 0 6])
ylabel('Amplitude')
xlabel('[n]');
title('y[n]=x[n]*h[n]')

Implementando esta soma de convolução com o método (Wozny):


x[n]
0 0 1 1 1 1 1
1 0 0 1 1 1 1 1
1 0 0 1 1 1 1 1
h[n] 1 0 0 1 1 1 1 1
1 0 0 1 1 1 1 1 y[n]=[0 0 1 2 3 4 5 5 5 5 5 5 4 3 2 1]
1 0 0 1 1 1 1 1
1 0 0 1 1 1 1 1
Página 13 de Analise
1 0 0 1 1 1 1 1
1 0 0 1 1 1 1 1
1 0 0 1 1 1 1 1
1 0 0 1 1 1 1 1
1 0 0 1 1 1 1 1

Exemplo 2.4 (página 95 do livro texto).

Um sistema LTI tem a resposta ao impulso dada por:


h[n] = u[n]
De termine a saída deste sistema quando a entrada for o pulso retangular
definido por:
x[n] = u[n] - u[n - 10]

Gráficos em [n]

Página 14 de Analise
Gráficos em [k]

Manterei o h[k] e inverterei e deslocarei o x[k] = > x[n-k]

Página 15 de Analise
Implementando a soma da convolução

Nesta condição, o produto de todos os pontos do x[n-k] pelo h[k] dão


resultado igual a zero.

Nesta condição, o produto de todos os pontos do x[n-k] pelo h[k] não mais
dão resultado igual a zero. Para n=0, há um ponto do h[k] coincidente com um
ponto do x[n-k]. Logo podemos dizer que:
y[n] = 0, para n<0.

Página 16 de Analise
Aqui utilizaremos a fórmula da convolução para resolver o problema:

Sabemos que:

Logo:

Última etapa desta soma de convolução

Como foi feito no segmento anterior, temos:


Página 17 de Analise
Como foi feito no segmento anterior, temos:

(para p = k - n + 9)

Finalmente, podemos escrever que o resultado da soma da convolução é:

No exemplo abaixo, feito no Matlab o eo


Exemplo 2.4 do Livro texto

clf;clear;clc;figure(1);
% Geração da resposta ao impulso h[n]
n = -5:20;
beta = 0.8;
h= (beta.^n).*[zeros(1,5) ones(1,21)];
subplot(311);
stem(n,h,'filled','b','LineWidth',2); grid on;
ylabel('Amplitude')
xlabel('[n]');

Página 18 de Analise
xlabel('[n]');
title(['h[n] = ',num2str(beta),'^n u[n])'])
% Geração do sinal x[n]
alfa = 0.9;
x= (alfa.^n).*[zeros(1,5) ones(1,10) zeros(1,11)];
subplot(312);
stem(n,x,'filled','r','LineWidth',2); grid on;
ylabel('Amplitude')
xlabel('[n]');
title(['x[n] = ',num2str(alfa),'^n (u[n] - u[n-10]'])
y = conv(x,h); %Avaliação da convolução
subplot(313);
tam = length(x)+length(h)-1; %Número de pontos da convolução
inicio = n(1)+n(1);%Valores iniciais dos vetores
m = inicio:tam-abs(inicio)-1;%Posição temporal da convolução
stem(m,y,'filled','k','LineWidth',2); grid on;
%axis([0 17 0 6])
ylabel('Amplitude')
xlabel('[n]');
title('y[n]=x[n]*h[n]')

Página 19 de Analise

Você também pode gostar