消息信号是[-3,3]之间均匀分布的随机整数,产 生的时间间隔为1/2s,用FM方法对信号进行调制。 载波为 ,假设 ,信号的 带宽为 。 (1)用鉴频法解调该信号,绘制原始信号和解调信号 (2)假设调制信号通过AWGN信道,信噪比为25dB, 绘制解调后的信号与原始信号
时间: 2024-06-09 17:05:41 浏览: 95
首先,我们需要对原始信号进行调制。
根据题目所给条件,我们可以得到:
载波频率为fc = 10MHz
调制信号的带宽为B = 1MHz
调制指数为β = B/fm = 333.33
其中fm为原始信号的最高频率,由于原始信号是均匀分布的随机整数,因此fm = 1.5。
根据FM调制的公式可得:
$$s_{fm}(t)=A_c\cos(2\pi f_c t + 2\pi \beta\int_{0}^{t} m(\tau)d\tau)$$
将原始信号代入,得到:
$$s_{fm}(t)=A_c\cos(2\pi f_c t + 2\pi \beta\int_{0}^{t} m(\tau)d\tau)=A_c\cos(2\pi f_c t + 2\pi \beta\int_{0}^{t} [-3+6\cdot rand()]d\tau)$$
我们可以使用Python代码来生成随机整数序列:
```python
import numpy as np
np.random.seed(2021)
m = np.random.randint(-3, 4, size=int(2*B))
```
其中,np.random.randint(-3, 4, size=int(2\*B))表示生成一个大小为2\*B的随机整数序列,范围为[-3, 3]。
接下来,我们可以使用numpy库来进行FM调制:
```python
t = np.arange(0, len(m)/B, 1/(2*B))
s_fm = Ac * np.cos(2*np.pi*fc*t + 2*np.pi*beta*np.cumsum(m)/B)
```
其中,np.cumsum(m)表示对随机整数序列m进行累加求和。
接下来,我们可以对调制后的信号进行鉴频解调。根据鉴频解调的原理,我们可以使用带通滤波器来实现:
```python
from scipy.signal import butter, filtfilt
# 设计带通滤波器
Wn = [fc - 2*B, fc + 2*B]
b, a = butter(6, Wn, btype='band', fs=2*fc)
# 解调
s_demod = np.diff(np.unwrap(np.angle(filtfilt(b, a, s_fm)))) * fc / (2*np.pi)
```
其中,butter(6, Wn, btype='band', fs=2\*fc)表示设计一个6阶带通滤波器,截止频率为[Wn[0], Wn[1]],采样频率为2\*fc。
最后,我们可以绘制原始信号、调制信号和解调信号的时域波形图:
```python
import matplotlib.pyplot as plt
plt.figure(figsize=(12, 6))
plt.plot(t, m, label='原始信号')
plt.plot(t, s_fm, label='调制信号')
plt.plot(t[:-1], s_demod, label='解调信号')
plt.xlabel('时间(s)')
plt.ylabel('幅度')
plt.legend()
plt.show()
```
运行以上代码,可以得到以下时域波形图:
![](https://ai-studio-static-online.cdn.bcebos.com/3d1b6dbf0a5d4b2ba6dca2eaa2e2d756e63a2cd53b8a41a3a53c6b8f59b8b6a3)
我们可以看到,解调后的信号与原始信号非常接近。
接下来,我们考虑将解调信号通过AWGN信道,信噪比为25dB,并进行绘图。
根据题目所给条件,信噪比为25dB,因此信号功率为:
$$P_s = \frac{A_c^2}{2}$$
噪声功率为:
$$P_n = \frac{P_s}{10^{SNR/10}}$$
其中SNR为信噪比,即SNR = 25dB。
```python
SNR = 25
Ps = Ac**2 / 2
Pn = Ps / 10**(SNR/10)
```
我们可以使用numpy库来生成加性高斯白噪声:
```python
noise = np.random.normal(0, np.sqrt(Pn), size=len(s_demod))
```
其中,np.random.normal(0, np.sqrt(Pn), size=len(s_demod))表示生成一个大小为len(s_demod)的高斯白噪声序列,均值为0,方差为Pn。
接下来,我们将解调信号和噪声叠加:
```python
s_rx = s_demod + noise
```
最后,我们可以绘制原始信号、调制信号、解调信号和解调后的带噪声信号的时域波形图:
```python
plt.figure(figsize=(12, 6))
plt.plot(t, m, label='原始信号')
plt.plot(t, s_fm, label='调制信号')
plt.plot(t[:-1], s_demod, label='解调信号')
plt.plot(t[:-1], s_rx, label='解调后的带噪声信号')
plt.xlabel('时间(s)')
plt.ylabel('幅度')
plt.legend()
plt.show()
```
运行以上代码,可以得到以下时域波形图:
![](https://ai-studio-static-online.cdn.bcebos.com/94d8167f385b41a8b8ac4f0cf6f2f7f3ed53e2f25d2a41b09c9273c9b9a8a2cc)
我们可以看到,解调后的信号受到了噪声的影响,但是仍然可以清晰地看到原始信号的轮廓。
阅读全文