python 写一个数字相敏检波程序
时间: 2023-12-10 21:42:09 浏览: 90
数字滤波程序
以下是一个简单的数字相干检波程序的 Python 代码示例:
```python
import numpy as np
# 生成信号
t = np.linspace(0, 1, 1000)
f = 10 # 信号频率
x = np.sin(2 * np.pi * f * t)
# 生成本振信号
fc = 11 # 本振频率
c = np.cos(2 * np.pi * fc * t)
# 相乘
y = x * c
# 滤波
from scipy import signal
b, a = signal.butter(5, 2 * f / 1000, 'low')
z = signal.filtfilt(b, a, y)
# 取样
Ts = 0.01 # 取样时间间隔
n = int(Ts * 1000) # 取样点数
z_sampled = z[::n]
# 显示结果
import matplotlib.pyplot as plt
plt.figure()
plt.subplot(2, 1, 1)
plt.plot(t, y, label='Mixed signal')
plt.plot(t, x, label='Original signal')
plt.plot(t, c, label='Carrier signal')
plt.legend()
plt.subplot(2, 1, 2)
plt.plot(t, z, label='Filtered signal')
plt.stem(t[::n], z_sampled, label='Sampled signal')
plt.legend()
plt.show()
```
该程序生成一个频率为 10 Hz 的正弦波信号,并将其与频率为 11 Hz 的本振信号相乘,得到混合信号。然后,使用一个低通滤波器过滤混合信号,只保留频率为 10 Hz 的分量。最后,按照一定的时间间隔进行采样,得到数字信号。程序使用 Python 的 NumPy、SciPy 和 Matplotlib 库进行信号处理和绘图。
阅读全文