Implemente a convolução discreta entre os sinais x[n]=1,2,3,4 e h[n]=0.5,0.5 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 x[n]=1,2,3,4 e h[n]=0.5,0.5 usando um loop for no MATLAB, sem recorrer à função ttconv. 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 Nx e Nh, a saída terá comprimento
Ny = Nx + Nh - 1
No nosso caso, Nx=4, Nh=2, logo Ny=5. A fórmula de convolução discreta que vamos usar (com indexação MATLAB começando em 1) é
y[n] ;=;sumk=1^Nx x[k],h[n - k + 1],
onde somamos somente quando n-k+1 estiver entre 1 e Nh.

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
ttymanual = [0.5;1.5;2.5;3.5;2.0]
e
ttyconv = [0.5;1.5;2.5;3.5;2.0].
Isso confirma que a implementação manual coincide exatamente com o resultado da função ttconv.

Resposta

O vetor de saída da convolução é
[0.5,;1.5,;2.5,;3.5,;2.0],
e esse resultado obtido manualmente confere perfeitamente com ttconv(x,h).

Exercícios relacionados