Guia de tecnologias

Operações matemáticas básicas em sinais (soma, produto, escalar) no Octave

5 min read Processamento de Sinais Atualizado 17 Oct 2025
Soma, Produto e Escalares em Sinais com Octave
Soma, Produto e Escalares em Sinais com 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)

Sinal senoidal de 440 Hz claramente amostrado

Gráfico do Sinal 2 (880 Hz)

>> [y2, fs] = audioread(sig2);
>> plot(y2)

Sinal senoidal de 880 Hz com amostragem visível

Passo 2: Somar os dois sinais

No Octave, somamos diretamente as amostras (os vetores devem ter o mesmo comprimento).

>> sumres=y1+y2;
>> plot(sumres)

Resultado da soma das duas senóides mostrando sobreposição de formas de onda

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)

Forma de onda da faixa Avemaria mostrando dinâmica vocal

Faixa Hymnus

>> [y2,fs]=audioread('hymnus.ogg');
>> plot(y2)

Forma de onda da faixa Hymnus com textura vocal

Para misturar as faixas:

>> y='avehymnus.ogg';
>> audiowrite(y, y1+y2, fs);
>> [y, fs]=audioread('avehymnus.ogg');
>> plot(y)

Forma de onda resultado da mistura de Avemaria e Hymnus

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.

Produto das duas senóides mostrando envelope modulador

Modulação: efeito quando as frequências fundamentais diferem muito

A multiplicação pode ser usada como modulação (AM/heterodinagem). Exemplo gráfico:

  1. 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);

Portadora de 220 Hz

  1. Crie um sinal modulador de 22 kHz (frequência muito maior):
>> y2=cos(100*w);
>> plot(y2);

Sinal modulador de alta frequência

  1. Multiplique e plote:
>> plot(y1.*y2);

Sinal modulado resultante com envelope rápido

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 com amplitude reduzida para 20%

Sinal reduzido para 50% da amplitude

>> plot(res2)

Sinal com amplitude reduzida para 50%

Sinal com fase invertida

>> plot(res3)

Sinal com fase invertida (multiplicado por -1)


Boas práticas e verificação (mini-metodologia)

  1. Verifique a taxa de amostragem (fs) de todos os arquivos antes de operar.
  2. Converta todos para mono ou extenda canais conforme necessário.
  3. Assegure vetores do mesmo comprimento (use truncamento ou zero-padding conscientemente).
  4. Controle ganho: normalize ou ajuste escalares para evitar clipping.
  5. 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.

Autor
Edição

Materiais semelhantes

Instalar e usar Podman no Debian 11
Containers

Instalar e usar Podman no Debian 11

Apt‑pinning no Debian: guia prático
Administração de sistemas

Apt‑pinning no Debian: guia prático

Injete FSR 4 com OptiScaler em qualquer jogo
Tecnologia

Injete FSR 4 com OptiScaler em qualquer jogo

DansGuardian e Squid com NTLM no Debian Etch
Infraestrutura

DansGuardian e Squid com NTLM no Debian Etch

Corrigir erro de instalação no Android
Android

Corrigir erro de instalação no Android

KNetAttach: Pastas de Rede remota no KDE
KDE

KNetAttach: Pastas de Rede remota no KDE