Implemente a convolução discreta entre os sinais
e
sem usar a função conv do MATLAB (use um loop for). Compare seu resultado com a função conv.
Passo 1
O enunciado pede para implementar a convolução discreta entre os sinais
e
usando um loop for no MATLAB, sem recorrer à função
. Em seguida, temos de comparar o resultado da implementação manual com o da função embutida. O conteúdo principal aqui é a definição de convolução discreta, que envolve um somatório de produtos.
Passo 2
Para sinais de comprimentos
e
, a saída terá comprimento
No nosso caso,
,
, logo
. A fórmula de convolução discreta que vamos usar (com indexação MATLAB começando em
) é
onde somamos somente quando
estiver entre
e
.
Passo 3
A seguir está o código MATLAB que implementa essa fórmula usando dois loops for. Primeiro definimos os sinais, calculamos tamanhos e inicializamos o vetor de saída com zeros. Depois fazemos o duplo loop, checando se o índice de
está no intervalo válido antes de acumular o produto.
% sinais de entrada
x \(=\) [\(1\), \(2\), \(3\), \(4\)];
h \(=\) [\(0.5\), \(0.5\)];
% comprimentos
Nx \(=\) length(x);
Nh \(=\) length(h);
Ny \(=\) Nx \(+\) Nh - \(1\);
% inicialização da saída manual
\(y_manual =\) zeros(\(1\), Ny);
% implementação da convolução via loop for
for n \(=1\):Ny
for k \(=1\):Nx
j \(=\) n - k \(+1\); % índice correspondente em h
if j >\(=1\) && j <\(=\) Nh % só acumula se j for válido
\(y_manual\)(n) \(= y_manual\)(n) \(+\) x(k)*h(j);
end
end
end
% comparação com conv
\(y_conv =\) conv(x, h);
% exibe resultados
disp('Resultado manual:'), disp(\(y_manual\))
disp('Resultado conv:') , disp(\(y_conv\))
Passo 4
Executando o código, obtemos
e
.
Isso confirma que a implementação manual coincide exatamente com o resultado da função .
e
Isso confirma que a implementação manual coincide exatamente com o resultado da função
Resposta
O vetor de saída da convolução é
e esse resultado obtido manualmente confere perfeitamente com
.