PRÁTÍCA 9 – GRÁFICO DE SINAIS AM e FM
Comandos:
Usar a biblioteca MATPLOTLIB e NUMPY para fazer gráficos e mostrar os sinais de modulação AM e FM
Tarefa:
Copie, cole, compile e execute cada um dos seguintes programas no interpretador online de python (esse é diferente dos outros usados nas práticas 1 a 6) ou na IDLE do Python instalada na sua máquina:
Programa 1 – Sinal AM
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
import numpy as np import matplotlib.pyplot as plt # Parâmetros para modulação AM Ac = 1 # Amplitude do sinal portadora fc = 100 # Frequência da portadora em Hz fm = 5 # Frequência do sinal modulador em Hz m = 0.5 # Índice de modulação fs = 1000 # Frequência de amostragem em Hz t = np.linspace(0, 1, fs, endpoint=False) # Array de tempo para 1 segundo # Sinal modulado AM s_t = Ac * (1 + m * np.cos(2 * np.pi * fm * t)) * np.cos(2 * np.pi * fc * t) # Plotando o sinal AM plt.figure(figsize=(12, 6)) # Gráfico no domínio do tempo plt.plot(t, s_t) plt.title('Sinal Modulado AM') plt.xlabel('Tempo (s)') plt.ylabel('Amplitude') plt.grid(True) plt.tight_layout() plt.show() |
Programa 2 – Sinal AM com espectro
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
import numpy as np import matplotlib.pyplot as plt # Parâmetros para modulação AM Ac = 1 # Amplitude do sinal da portadora fc = 100 # Frequência da portadora em Hz fm = 5 # Frequência do sinal modulador em Hz m = 0.5 # Índice de modulação fs = 1000 # Frequência de amostragem em Hz t = np.linspace(0, 1, fs, endpoint=False) # Array de tempo para 1 segundo # Sinal modulado AM s_t = Ac * (1 + m * np.cos(2 * np.pi * fm * t)) * np.cos(2 * np.pi * fc * t) # Realizar FFT S_f = np.fft.fft(s_t) S_f = np.fft.fftshift(S_f) # Centralizar os componentes de frequência zero freqs = np.fft.fftfreq(len(s_t), 1/fs) freqs = np.fft.fftshift(freqs) # Centralizar os componentes de frequência zero # Calcular a magnitude do espectro S_f_magnitude = np.abs(S_f) / len(s_t) # Plotar o sinal AM plt.figure(figsize=(12, 6)) # Gráfico no domínio do tempo plt.subplot(2, 1, 1) plt.plot(t, s_t) plt.title('Sinal Modulado AM') plt.xlabel('Tempo (s)') plt.ylabel('Amplitude') plt.grid(True) # Gráfico no domínio da frequência plt.subplot(2, 1, 2) plt.plot(freqs, S_f_magnitude) plt.title('Espectro do Sinal Modulado AM') plt.xlabel('Frequência (Hz)') plt.ylabel('Magnitude') plt.grid(True) plt.xlim([0, 200]) # Limitar o intervalo de frequência para melhor visualização plt.tight_layout() plt.show() |
Programa 3 – Sinal FM
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
import numpy as np import matplotlib.pyplot as plt # Parâmetros para modulação FM Ac = 1 # Amplitude do sinal da portadora fc = 100 # Frequência da portadora em Hz fm = 5 # Frequência do sinal modulador em Hz beta = 15 # Índice de modulação (desvio de frequência) fs = 10000 # Frequência de amostragem em Hz t = np.linspace(0, 1, fs, endpoint=False) # Array de tempo para 1 segundo # Sinal modulado FM s_t = Ac * np.cos(2 * np.pi * fc * t + beta * np.sin(2 * np.pi * fm * t)) # Plotando o sinal FM plt.figure(figsize=(12, 6)) # Gráfico no domínio do tempo plt.plot(t, s_t) plt.title('Sinal Modulado FM') plt.xlabel('Tempo (s)') plt.ylabel('Amplitude') plt.grid(True) plt.tight_layout() plt.show() |
Programa 4 – Sinal FM com espectro
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
import numpy as np import matplotlib.pyplot as plt # Parâmetros para modulação FM Ac = 1 # Amplitude do sinal da portadora fc = 100 # Frequência da portadora em Hz fm = 5 # Frequência do sinal modulador em Hz beta = 15 # Índice de modulação (desvio de frequência) fs = 10000 # Frequência de amostragem em Hz t = np.linspace(0, 1, fs, endpoint=False) # Array de tempo para 1 segundo # Sinal modulado FM s_t = Ac * np.cos(2 * np.pi * fc * t + beta * np.sin(2 * np.pi * fm * t)) # Realizar FFT S_f = np.fft.fft(s_t) S_f = np.fft.fftshift(S_f) # Centralizar os componentes de frequência zero freqs = np.fft.fftfreq(len(s_t), 1/fs) freqs = np.fft.fftshift(freqs) # Centralizar os componentes de frequência zero # Calcular a magnitude do espectro S_f_magnitude = np.abs(S_f) / len(s_t) # Plotando o sinal FM e o espectro plt.figure(figsize=(12, 6)) # Gráfico no domínio do tempo plt.subplot(2, 1, 1) plt.plot(t, s_t) plt.title('Sinal Modulado FM') plt.xlabel('Tempo (s)') plt.ylabel('Amplitude') plt.grid(True) # Gráfico no domínio da frequência plt.subplot(2, 1, 2) plt.plot(freqs, S_f_magnitude) plt.title('Espectro do Sinal Modulado FM') plt.xlabel('Frequência (Hz)') plt.ylabel('Magnitude') plt.grid(True) plt.xlim([0, 200]) # Limitar a faixa de frequência para melhor visualização plt.tight_layout() plt.show() |