python正弦信号过采样和欠采样
时间: 2023-08-11 12:07:00 浏览: 183
在信号处理中,过采样和欠采样是指将采样率设置得高于或低于信号的最小采样率,从而导致信号数据的冗余或信息丢失。
在Python中,我们可以使用SciPy库来生成正弦信号,并通过修改采样率来演示过采样和欠采样的效果。
首先,我们导入必要的库并生成一个频率为2 Hz、振幅为1的正弦信号:
```python
import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
# 生成正弦信号
fs = 20 # 采样率
t = np.linspace(0, 1, fs, endpoint=False)
x = np.sin(2 * np.pi * 2 * t)
```
然后,我们可以将采样率设置为原来的两倍(即40 Hz)来演示过采样的效果:
```python
# 过采样
fs_new = 40 # 新采样率
t_new = np.linspace(0, 1, fs_new, endpoint=False)
x_new = np.interp(t_new, t, x) # 线性插值
```
最后,我们可以将采样率设置为原来的一半(即10 Hz)来演示欠采样的效果:
```python
# 欠采样
fs_new = 10 # 新采样率
t_new = np.linspace(0, 1, fs_new, endpoint=False)
x_new = signal.resample(x, fs_new) # 重采样
```
在过采样的情况下,我们可以看到信号数据变得更加密集,并且频谱图中出现了重复的谱线。在欠采样的情况下,我们可以看到信号数据变得更加稀疏,并且频谱图中出现了混叠效应,即高频成分被误认为是低频成分。
阅读全文