A simulação implementa e compara duas técnicas de modulação por incremento: a versão clássica com passo fixo (DM) e sua extensão adaptativa (ADM). O objetivo principal é avaliar quantitativamente a fidelidade da reconstrução do sinal após demodulação, utilizando a razão sinal-ruído (SNR) como métrica objetiva.
O ambiente de execução utiliza MATLAB R2022a. O projeto inclui scripts completos com anotações em português, além de um fluxo de processamento estruturado que permite fácil modificação dos parâmetros de simulação.
O sinal de entrada é sintetizado como uma combinação de componentes senoidais com frequências distintas, projetada para desafiar a capacidade de rastreamento dos algoritmos:
Fs = 20e3; % Taxa de amostragem (20 kHz)
t = linspace(0, 0.1, round(0.1 * Fs));
sinal_entrada = 0.5 * sin(2*pi*800*t) + 0.3 * cos(2*pi*5e3*t);
O termo de 5 kHz atua como um estímulo crítico para evidenciar as limitações do método DM em cenários de alta variação de inclinação.
A função de quantização DM opera com um incremento constante delta_fixo, atualizando iterativamente o valor estimado com base no sinal de erro:
function [saida, erro] = quantizador_dm(entrada, delta, estado_anterior)
erro = entrada - estado_anterior;
saida = estado_anterior + delta * sign(erro);
end
Já a versão ADM introduz uma lógica de adaptação em tempo real. A cada iteração, o tamanho do passo é recalculado com base na coerência entre os sinais de erro consecutivos:
function novo_delta = ajuste_adaptativo(delta_atual, erro_atual, erro_anterior)
if erro_atual * erro_anterior > 0
novo_delta = delta_atual * 1.45; % Crescimento moderado sob tendência persistente
else
novo_delta = delta_atual * 0.78; % Redução suave sob oscilação
end
novo_delta = min(max(novo_delta, 1e-3), 0.095); % Limitação física do passo
end
Essa abordagem reduz significativamente o fenômeno de sobrecarga de inclinação (slope overload), especialmente em transições rápidas do sinal original. Visualmente, a saída ADM exibe menor distorção harmônica e melhor preservação da forma de onda em regiões de alta frequência.
O cálculo final da SNR é realizado diretamente no domínio do tempo, comparando a energia do sinal de referência com a energia do erro de reconstrução:
energia_referencia = sum(sinal_entrada .^ 2);
snr_dm_db = 10 * log10(energia_referencia / sum((sinal_entrada - saida_dm) .^ 2));
snr_adm_db = 10 * log10(energia_referencia / sum((sinal_entrada - saida_adm) .^ 2));
fprintf('SNR (DM): %.2f dB | SNR (ADM): %.2f dB\n', snr_dm_db, snr_adm_db);
Resultados típicos indicam um ganho médio de 6,5 a 7,8 dB para o ADM sobre o DM em condições padrão de simulação. Esse ganho é ainda mais pronunciado quando o sinal apresenta rampas acentuadas ou mudanças bruscas de amplitude. A escolha do valor inicial do passo também influencia o tempo de convergência — valores entre 0,008 e 0,012 demonstraram equilíbrio entre velocidade de aquisição e estabilidade inicial.