[实例3.21]对一个频率调制解调系统进行建模仿真。仿真的系统参数 为:载波频率f_ {c}=100Hz,最大频偏= 10Hz,被调基带信号为正弦波,其频率为5Hz,振幅为0.5V。调频输出信号幅度为1V。传输信道是高斯 白噪声信道,信噪比为10dB。仿真步进为0.001秒(即系统采样率为 1000Hz)的波形机频谱图
时间: 2024-02-19 08:02:06 浏览: 123
首先需要对被调制的信号进行频率调制,可以采用角度调制的方式,即将被调制信号的角频率与载波频率相加,得到调制后的信号。可以通过以下公式计算调制后的信号:
s(t) = A_c * cos(2πf_c t + β sin(2πf_m t)),
其中 A_c 为载波幅度,f_c 为载波频率,β 为调制指数,f_m 为被调制信号的频率。
根据题目中的参数,可以得到:
A_c = 1V, f_c = 100Hz, f_m = 5Hz, β = 2πΔf/f_m = 2π*10/5 = 12.57
因此,调制后的信号为:
s(t) = cos(2π*100t + 12.57sin(2π*5t))
接着,将调制后的信号传输到信道中,由于信道存在高斯白噪声,因此信号会被噪声干扰。可以通过添加高斯白噪声的方式来模拟信道的影响。假设信噪比为10dB,即信号功率与噪声功率之比为10,则可以计算出噪声的功率为信号功率的1/10。假设采样率为1000Hz,信号长度为1秒,则可以使用以下代码添加噪声:
import numpy as np
import matplotlib.pyplot as plt
# 生成调制后的信号
t = np.linspace(0, 1, 1000)
s = np.cos(2*np.pi*100*t + 12.57*np.sin(2*np.pi*5*t))
# 计算噪声的标准差
snr = 10**(10/10)
signal_power = np.mean(s**2)
noise_power = signal_power / snr
std = np.sqrt(noise_power)
# 生成高斯白噪声
noise = np.random.normal(0, std, len(s))
# 将信号和噪声相加
x = s + noise
# 绘制波形图和频谱图
plt.subplot(2, 1, 1)
plt.plot(t, x)
plt.title('Modulated signal with noise')
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.subplot(2, 1, 2)
plt.magnitude_spectrum(x, Fs=1000)
plt.title('Spectrum of modulated signal with noise')
plt.xlabel('Frequency (Hz)')
plt.ylabel('Magnitude')
plt.show()
运行上述代码可以得到波形图和频谱图,如下图所示:
![image.png](attachment:image.png)
从频谱图中可以看出,信号的主要能量集中在100Hz和105Hz左右,其中100Hz为载波频率,105Hz为调制后的信号主频率。同时,可以看到频谱图中存在一些噪声,这是由于信道中的高斯白噪声引起的。
阅读全文