Operações matemáticas básicas em sinais (soma, produto, escalar) no Octave
Objetivo principal
Aprender a combinar sinais por soma e produto, entender a modulação por multiplicação e controlar amplitude via multiplicação por escalares. Público-alvo: estudantes de processamento de sinais, músicos interessados em efeitos digitais e desenvolvedores que trabalham com áudio em Octave/MATLAB.
Terminologia em uma linha
Sinal: sequência de amostras no tempo; Taxa de amostragem (fs): número de amostras por segundo (Hz); Modulação: multiplicação que desloca conteúdo espectral.
Adicionando sinais
A soma de dois sinais S1(t) e S2(t) gera um sinal R(t) cujo valor, em cada instante, é a soma dos valores dos sinais originais:
R(t) = S1(t) + S2(t)
Abaixo recriamos essa soma no Octave e mostramos o efeito graficamente. Primeiro, geramos duas senóides com frequências diferentes para explorar o resultado da soma.
Passo 1: Criar dois sinais com frequências diferentes (arquivos .ogg)
>> sig1='cos440.ogg';
>> sig2='cos880.ogg';
>> fs=44100;
>> t=0:1/fs:0.02;
>> w1=2*pi*440*t;
>> w2=2*pi*880*t;
>> audiowrite(sig1,cos(w1),fs);
>> audiowrite(sig2,cos(w2),fs);A seguir, plotamos ambos os sinais para visualização.
Gráfico do Sinal 1 (440 Hz)
>> [y1, fs] = audioread(sig1);
>> plot(y1)
Gráfico do Sinal 2 (880 Hz)
>> [y2, fs] = audioread(sig2);
>> plot(y2)
Passo 2: Somar os dois sinais
No Octave, somamos diretamente as amostras (os vetores devem ter o mesmo comprimento).
>> sumres=y1+y2;
>> plot(sumres)
Nota: se os sinais tiverem amplitudes altas, a soma pode causar clipping ao salvar/armazenar em formatos com faixa limitada. Reduza a amplitude (multiplicando por um escalar menor que 1) antes de gravar se for necessário.
Importante: quando somar arquivos de áudio reais, verifique se ambos têm a mesma taxa de amostragem e o mesmo número de canais (mono/estéreo). Caso contrário, reamostre ou converta canais antes de somar.
Passo 3: Soma de sinais reais (exemplo com duas faixas de canto gregoriano)
Exemplo prático com duas faixas: “avemaria_.ogg” e “hymnus.ogg”. Primeiro lemos e plotamos cada uma.
Faixa Avemaria
>> [y1,fs]=audioread('avemaria_.ogg');
>> plot(y1)
Faixa Hymnus
>> [y2,fs]=audioread('hymnus.ogg');
>> plot(y2)
Para misturar as faixas:
>> y='avehymnus.ogg';
>> audiowrite(y, y1+y2, fs);
>> [y, fs]=audioread('avehymnus.ogg');
>> plot(y)
O resultado auditivo é uma mistura simples — ambas as faixas são audíveis simultaneamente. Se desejado, aplique ganho (normalização) ou equalização antes de salvar.
Produto (multiplicação) de dois sinais
Multiplicar dois sinais ponto a ponto altera seu conteúdo espectral. Em Octave, use o operador element-wise ‘.*’ para arranjos de mesmo tamanho:
R(t) = S1(t) * S2(t)
Exemplo usando as mesmas senóides criadas anteriormente:
>> sig1='cos440.ogg';
>> sig2='cos880.ogg';
>> product='prod.ogg';
>> fs=44100;
>> t=0:1/fs:0.02;
>> w1=2*pi*440*t;
>> w2=2*pi*880*t;
>> audiowrite(sig1, cos(w1), fs);
>> audiowrite(sig2, cos(w2), fs);
>> [y1,fs]=audioread(sig1);
>> [y2,fs]=audioread(sig2);
>> audiowrite(product, y1.*y2, fs);
>> [yprod,fs]=audioread(product);
>> plot(yprod);Note que usamos ‘.*’ porque a multiplicação é feita ponto a ponto entre vetores.

Modulação: efeito quando as frequências fundamentais diferem muito
A multiplicação pode ser usada como modulação (AM/heterodinagem). Exemplo gráfico:
- Crie um sinal portador em 220 Hz:
>> fs=44100;
>> t=0:1/fs:0.03;
>> w=2*pi*220*t;
>> y1=cos(w);
>> plot(y1);
- Crie um sinal modulador de 22 kHz (frequência muito maior):
>> y2=cos(100*w);
>> plot(y2);
- Multiplique e plote:
>> plot(y1.*y2);
Efeito perceptual: nova energia espectral aparece em frequências somadas e subtraídas (portadora ± moduladora). Isto é a base de AM e de muitos efeitos de síntese sonora.
Multiplicar um sinal por um escalar
Multiplicar cada amostra por um escalar K altera a amplitude (ganho) do sinal e, se K for negativo, inverte sua fase em 180°.
R(t) = K * F(t)
Exemplo no Octave:
>> [y,fs]=audioread('cos440.ogg');
>> res1='coslow.ogg';
>> res2='coshigh.ogg';
>> res3='cosinverted.ogg';
>> K1=0.2;
>> K2=0.5;
>> K3=-1;
>> audiowrite(res1, K1*y, fs);
>> audiowrite(res2, K2*y, fs);
>> audiowrite(res3, K3*y, fs);Gráfico do sinal original
>> plot(y)
Sinal reduzido para 20% da amplitude
>> plot(res1)
Sinal reduzido para 50% da amplitude
>> plot(res2)
Sinal com fase invertida
>> plot(res3)
Boas práticas e verificação (mini-metodologia)
- Verifique a taxa de amostragem (fs) de todos os arquivos antes de operar.
- Converta todos para mono ou extenda canais conforme necessário.
- Assegure vetores do mesmo comprimento (use truncamento ou zero-padding conscientemente).
- Controle ganho: normalize ou ajuste escalares para evitar clipping.
- Ouça o resultado em monitores confiáveis e use análise espectral (FFT) para inspeção.
Quando essas operações podem falhar (contrapontos)
- Diferença de fs entre arquivos: somas/produções geram artefatos ou erros.
- Comprimentos diferentes sem alinhamento: índices fora do intervalo.
- Overflow/clipping ao salvar em formatos com faixa dinâmica limitada.
- Operações em sinais com canais diferentes sem tratamento provocam desalinhamento estéreo.
Abordagens alternativas
- Use reamostragem (resample) quando fs difere.
- Para mixagens mais avançadas, aplique crossfading e equalização antes de somar.
- Use filtros passa-baixa/ passa-faixa para isolar bandas antes de modular.
Pequeno guia rápido (cheat sheet)
- Soma ponto a ponto: y = y1 + y2
- Produto ponto a ponto: y = y1 .* y2
- Ganho/escala: y = K * y
- Converter para mono: y = mean(y, 2) % média entre canais
- Normalizar: y = y / max(abs(y))
Checklist por função
- Estudante: confirme fs e visualize as formas de onda.
- Engenheiro de áudio: teste em 24 bits/float para evitar perda; monitorar LUFS/nível.
- Desenvolvedor: escreva testes unitários para comprimentos e fs; trate exceções.
Casos de teste simples (aceitação)
- Soma: dois vetores de mesmo comprimento retornam vetor do mesmo comprimento com elementos correspondentes somados.
- Produto: verificar que y(i) == y1(i) * y2(i) para várias amostras aleatórias.
- Escalar: para K=1, saída igual à entrada; para K=0, saída é vetor nulo.
Glossário (uma linha cada)
- Amostragem: processo de medir um sinal contínuo em instantes discretos.
- Clipping: saturação quando amplitude excede o máximo representável.
- Modulação: multiplicação que desloca conteúdo espectral.
Conclusão
As operações básicas (soma, produto e multiplicação por escalar) são fundamentos do processamento de áudio. Elas sustentam técnicas mais avançadas como análise espectral, modulação em amplitude e modulação angular. No próximo tutorial veremos como aplicar transformadas (FFT) e usar essas operações para manipular o espectro de sinais.
Notas finais: teste sempre com sinais sintetizados antes de aplicar em material real. Faça backup das faixas originais antes de sobrescrever arquivos.
Materiais semelhantes
Instalar e usar Podman no Debian 11
Apt‑pinning no Debian: guia prático
Injete FSR 4 com OptiScaler em qualquer jogo
DansGuardian e Squid com NTLM no Debian Etch
Corrigir erro de instalação no Android