# -*- coding: utf-8 -*- """ Created on Thu Mar 20 16:10:15 2025 @author: Vitor_PC """ import numpy as np import matplotlib.pyplot as plt # Parâmetros do sinal fs = 100 # Frequência de amostragem (Hz) t_end = 1 # Duração do sinal (segundos) t = np.linspace(0, t_end, int(fs*t_end), endpoint=False) # Vetor de tempo # Criando um pulso gaussiano no tempo t0 = 0.5 # Centro da gaussiana sigma = 0.05 # Largura do pulso sinal_gaussiano = np.exp(-((t - t0)**2) / (2 * sigma**2)) # Transformada de Fourier do sinal original fft_vals = np.fft.fft(sinal_gaussiano) freq = np.fft.fftfreq(len(t), d=1/fs) # Aplicação do Filtro Passa-Baixa (Degrau) fc = 5 # Frequência de corte (Hz) fft_filtrada = np.copy(fft_vals) fft_filtrada[np.abs(freq) > fc] = 0 # Zerar frequências acima do corte # Transformada Inversa para obter o sinal filtrado sinal_filtrado = np.fft.ifft(fft_filtrada).real # Gráficos para visualizar os efeitos plt.figure(figsize=(14, 8)) # Sinal original no tempo plt.subplot(3, 2, 1) plt.plot(t, sinal_gaussiano, label='Sinal Gaussiano', color='blue') plt.xlabel('Tempo (s)') plt.ylabel('Amplitude') plt.title('Sinal Original (Pulso Gaussiano)') plt.grid(True) plt.legend() # Espectro original plt.subplot(3, 2, 2) plt.plot(freq[freq >= 0], np.abs(fft_vals[freq >= 0]), color='red') plt.xlabel('Frequência (Hz)') plt.ylabel('Magnitude') plt.title('Espectro Original') plt.xlim(0, 15) plt.grid(True) # Sinal filtrado no tempo plt.subplot(3, 2, 3) plt.plot(t, sinal_filtrado, label='Sinal Filtrado', color='green') plt.xlabel('Tempo (s)') plt.ylabel('Amplitude') plt.title('Sinal Filtrado (Passa-Baixa Degrau)') plt.grid(True) plt.legend() # Espectro filtrado plt.subplot(3, 2, 4) plt.plot(freq[freq >= 0], np.abs(fft_filtrada[freq >= 0]), color='red') plt.xlabel('Frequência (Hz)') plt.ylabel('Magnitude') plt.title('Espectro Após Filtragem') plt.xlim(0, 15) plt.grid(True) # Comparação entre sinais original e filtrado plt.subplot(3, 1, 3) plt.plot(t, sinal_gaussiano, label='Original', color='blue', alpha=0.7) plt.plot(t, sinal_filtrado, label='Filtrado', color='green', linestyle='dashed') plt.xlabel('Tempo (s)') plt.ylabel('Amplitude') plt.title('Comparação: Original vs Filtrado') plt.grid(True) plt.legend() plt.tight_layout() plt.show()