Leia também:

Representação tridimensional (x,y,z)

Coordenadas Tridimensionais

Coordenadas Tridimensionais Um sistema de coordenadas tridimensionais é um conjunto de três eixos cartesianos que são usados para localizar pontos no espaço tridimensional. Cada ponto

Read More »

Processamento de Sinais

Table of Contents

Geração de Sinais

O objetivo dessa parte é criar um sinal composto por várias frequências, o que é muito comum em aplicações de processamento de sinais, como em telecomunicações, análise de áudio, e outras. No contexto do laboratório, você trabalha com um sinal que é uma mistura de componentes senoidais com frequências e amplitudes específicas. Vamos detalhar cada parte do processo de geração deste sinal:

Frequência de Amostragem

  • Frequência de Amostragem (Fs): 2000 Hz. Isso significa que o sinal é amostrado 2000 vezes por segundo. A escolha da frequência de amostragem é crucial e deve ser pelo menos o dobro da frequência máxima presente no sinal para satisfazer o teorema da amostragem de Nyquist, evitando o efeito de aliasing.

Duração do Sinal

  • Duração: 5 segundos. A duração define quanto tempo o sinal simulado vai durar. No seu caso, você vai gerar um sinal que continua por 5 segundos.

Componentes do Sinal

  • Componentes Senoidais: O sinal é uma soma de várias senoides, cada uma com uma frequência e amplitude diferentes:
    • 2cos(2pi50t) — Componente de 50 Hz com amplitude 2
    • cos(2pi300*t) — Componente de 300 Hz com amplitude 1
    • 2.5cos(2pi500t) — Componente de 500 Hz com amplitude 2.5
    • 1.5cos(2pi700t) — Componente de 700 Hz com amplitude 1.5

Implementação no Octave

Para implementar isso no Octave, o código inicializa a variável de tempo t com intervalos que dependem da frequência de amostragem. A expressão t=0:1/Fs:5-1/Fs cria um vetor de tempo que começa em 0, termina pouco antes dos 5 segundos completos (para garantir um número inteiro de amostras), e incrementa em passos de 1/2000 segundos (que é o inverso da frequência de amostragem).

O sinal é então gerado pela soma das várias componentes senoidais em função deste vetor de tempo, resultando em um sinal temporal que você pode analisar ou filtrar posteriormente.

Esse primeiro passo é essencial para entender como sinais compostos são formados e como suas características de frequência e amplitude podem ser definidas e manipuladas digitalmente.

Se tudo estiver claro até aqui, posso continuar explicando sobre o design do filtro digital recursivo (IIR).

Projeto de Filtro Digital Recursivo (IIR)

Nesta parte do laboratório, o objetivo é projetar um filtro que possa atenuar significativamente a componente de 300 Hz do sinal gerado, enquanto minimamente afeta as outras frequências. Os filtros IIR (Infinite Impulse Response) são amplamente usados devido à sua eficiência em termos de ordem do filtro e capacidade de imitar as características de filtros analógicos clássicos.

Definição das Especificações do Filtro

  • Frequências de Passagem (Wp): Define as faixas de frequência onde o sinal deve passar pelo filtro sem ser atenuado. No seu caso, são definidas em torno das frequências de 50 Hz e 500 Hz.
  • Frequências de Corte (Ws): Estabelece os limites onde o filtro deve atenuar o sinal, centradas em torno da frequência de 300 Hz (290 Hz e 310 Hz).
  • Atenuação nas Faixas de Passagem (Rp) e de Rejeição (Rs): Rp é a máxima perda permitida na banda de passagem (menos de 2% de atenuação), enquanto Rs é a atenuação mínima desejada na banda de parada (aqui configurada para 30 dB).

Projeto do Filtro usando Octave

Para projetar o filtro, utiliza-se o método de Butterworth devido à sua resposta de frequência maximamente plana na banda de passagem, o que ajuda a minimizar distorções. Aqui estão os passos básicos usando funções específicas do Octave:

  1. Calculando a Ordem do Filtro:
    • buttord: Esta função calcula a ordem mínima do filtro e a frequência de corte normalizada que atendem às especificações de atenuação e banda de passagem/rejeição. Os parâmetros incluem as frequências de passagem e de parada (ambas normalizadas pela metade da frequência de amostragem, 𝐹𝑠22Fs​) e as atenuações desejadas (Rp e Rs).
  2. Desenvolvendo o Filtro:
    • butter: Com a ordem e a frequência de corte calculadas, essa função gera os coeficientes do numerador e denominador da função de transferência do filtro.
  3. Análise da Resposta do Filtro:
    • tf e freqz: A função tf cria um modelo de função de transferência a partir dos coeficientes, e freqz pode ser usada para analisar a resposta em frequência do filtro. Isso é crucial para verificar se o filtro atende aos requisitos de design, especialmente na atenuação da frequência de 300 Hz e na preservação das outras frequências.

Este processo de design do filtro é essencial para garantir que o sinal processado tenha as características desejadas, removendo ou atenuando frequências específicas sem afetar significativamente outras partes do sinal.

Com essas bases, você pode aplicar o filtro ao seu sinal e verificar se ele funciona conforme esperado. Vamos continuar com a implementação do filtro na próxima parte, se estiver tudo bem até aqui!

% Parâmetros do sinal
Fs = 2000;               % Frequência de amostragem
Ts = 1/Fs;               % Período de amostragem
t = 0:Ts:5-Ts;           % Vetor de tempo

% Geração do sinal
s = 2*cos(2*pi*50*t) + cos(2*pi*300*t) + 2.5*cos(2*pi*500*t) + 1.5*cos(2*pi*700*t);

% Plot do sinal
figure;
plot(t, s);
title('Sinal Gerado');
xlabel('Tempo (s)');
ylabel('Amplitude');

2. Código para Projeto e Análise do Filtro IIR

% Especificações do filtro
Wp = [50 500] / (Fs/2);   % Frequências de passagem normalizadas
Ws = [290 310] / (Fs/2);  % Frequências de parada normalizadas
Rp = -20*log10(0.98);     % Atenuação máxima na banda de passagem
Rs = 30;                  % Atenuação mínima na banda de parada

% Projeto do filtro usando Butterworth
[N, Wc] = buttord(Wp, Ws, Rp, Rs);
[num, den] = butter(N, Wc, 'stop');  % Filtro 'stop' para rejeitar a banda entre Wp1 e Wp2

% Função de Transferência
H = tf(num, den, Ts);

% Resposta em frequência
figure;
freqz(num, den, 1024, Fs);
title('Resposta em Frequência do Filtro IIR');

% Aplicando o filtro ao sinal gerado
s_filtered = filter(num, den, s);

% Plot do sinal filtrado
figure;
plot(t, s_filtered);
title('Sinal Filtrado');
xlabel('Tempo (s)');
ylabel('Amplitude');

Geração do Sinal

O código para geração do sinal cria um vetor de tempo t e usa esse vetor para construir um sinal composto por múltiplas componentes senoidais, cada uma com sua própria frequência e amplitude. O vetor de tempo é criado de 0 até 5 segundos, decrementando em passos que correspondem ao período de amostragem Ts (o inverso da frequência de amostragem Fs).

Funções Específicas do Filtro

buttord

  • Função: buttord é usada para determinar a ordem mínima necessária para um filtro Butterworth que atenda às especificações dadas de atenuação e banda de passagem/rejeição.
  • Parâmetros:
    • Wp e Ws: São as frequências de passagem e de parada do filtro, respectivamente, normalizadas pela metade da frequência de amostragem (Fs/2).
    • Rp e Rs: São as atenuações em dB na banda de passagem e na banda de parada, respectivamente. Rp é calculado como -20*log10(0.98), o que significa que a atenuação máxima permitida na banda de passagem é menor que 2%.
  • Retorno: Retorna a ordem N do filtro e a frequência de corte normalizada Wc que podem ser usadas para construir o filtro.

butter

  • Função: butter cria um filtro Butterworth digital de ordem N com as frequências de corte especificadas em Wc.
  • Parâmetros:
    • N: A ordem do filtro determinada por buttord.
    • Wc: As frequências de corte calculadas por buttord.
    • 'stop': Especifica que o filtro é um filtro “notch” (de rejeição de banda), que permite passagem nas bandas fora do intervalo definido por Wc.
  • Retorno: Retorna os coeficientes do numerador num e do denominador den da função de transferência do filtro.

filter

  • Função: filter aplica o filtro definido pelos coeficientes num e den ao sinal de entrada.
  • Parâmetros:
    • num e den: Coeficientes do filtro gerados por butter.
    • s: O sinal original a ser filtrado.
  • Retorno: Retorna o sinal filtrado, onde a frequência de 300 Hz foi atenuada conforme especificado.

Análise de Resposta em Frequência

O script também inclui uma chamada à função freqz, que é usada para calcular e plotar a resposta em frequência do filtro. Isso é crucial para visualizar como o filtro afeta diferentes frequências, especialmente a frequência de 300 Hz que se deseja atenuar.

Essas funções são fundamentais no design de filtros digitais, permitindo especificar precisamente o comportamento desejado do filtro e aplicá-lo a sinais para alcançar os efeitos desejados. Se você tiver mais perguntas sobre qualquer parte do código ou sobre o funcionamento das funções, fique à vontade para perguntar!

Pular para o conteúdo