# -*- coding: utf-8 -*- """ Created on Thu Mar 20 15:41:20 2025 @author: Vitor_PC """ import numpy as np import matplotlib.pyplot as plt # Parâmetros do sinal fs = 1000 # Frequência de amostragem (Hz) t_end = 4 # Duração do sinal em segundos t = np.linspace(0, t_end, int(fs*t_end), endpoint=False) # Vetor de tempo # Definindo os componentes senoidais A1, f1 = 1.0, 10 # Amplitude e frequência do primeiro seno A2, f2 = 1.0, 11 # Amplitude e frequência do segundo seno A3, f3 = 0.3, 25 # Amplitude e frequência do terceiro seno # Sinal composto: soma de três senos sinal = A1 * np.sin(2 * np.pi * f1 * t) + \ A2 * np.sin(2 * np.pi * f2 * t) + \ A3 * np.sin(2 * np.pi * f3 * t) # Cálculo da Transformada de Fourier usando FFT fft_vals = np.fft.fft(sinal) fft_vals = fft_vals / len(sinal) # Normalização # Frequências associadas aos coeficientes FFT freq = np.fft.fftfreq(len(sinal), d=1/fs) # Selecionar somente a parte positiva das frequências (para visualização) mask = freq >= 0 freq_pos = freq[mask] fft_magnitude = np.abs(fft_vals[mask]) # Módulo dos coeficientes # Plot do sinal no domínio do tempo plt.figure(figsize=(14, 5)) plt.subplot(1, 2, 1) plt.plot(t, sinal, color='blue') plt.title('Sinal no Domínio do Tempo') plt.xlabel('Tempo (s)') plt.ylabel('Amplitude') plt.grid(True) # Plot do espectro de frequência (magnitude) plt.subplot(1, 2, 2) plt.stem(freq_pos, fft_magnitude, linefmt='r-', markerfmt='ro', basefmt=" ") # Removido use_line_collection plt.title('Espectro de Frequência') plt.xlabel('Frequência (Hz)') plt.ylabel('Magnitude') plt.xlim(0, 30) # Limitar o eixo x para melhor visualização plt.grid(True) plt.tight_layout() plt.show()