采样定理用python
时间: 2023-11-19 09:01:43 浏览: 41
采样定理是一种数学定理,它指出:如果一个信号没有高于它的一半频率的频率成分,则该信号的完整信息可以通过在该信号中取样的一系列值来恢复。在Python中,可以使用numpy模块来实现采样定理。
首先,我们需要导入numpy模块:
```
import numpy as np
```
接下来,我们可以创建一个信号并对其进行采样。在这个例子中,我们将创建一个包含三个正弦波的信号,并对其进行采样。
```
# 创建信号
t = np.linspace(0, 1, 1000)
signal = np.sin(2 * np.pi * 10 * t) + np.sin(2 * np.pi * 20 * t) + np.sin(2 * np.pi * 30 * t)
# 对信号进行采样
sampling_rate = 100
samples = signal[::int(len(signal)/(sampling_rate*1.0))]
```
在上面的代码中,我们使用np.linspace函数创建了一个包含1000个点的时间轴t,并使用np.sin函数创建了一个包含三个正弦波的信号signal。然后,我们使用采样率sampling_rate对信号进行采样,并将结果存储在samples数组中。
最后,我们可以使用numpy.fft模块将信号转换为频域,并绘制其频谱图。
```
# 将信号转换为频域
freq = np.fft.fftfreq(len(samples)) * sampling_rate
fft = np.abs(np.fft.fft(samples))
# 绘制频谱图
import matplotlib.pyplot as plt
plt.plot(freq, fft)
plt.xlabel('Frequency (Hz)')
plt.ylabel('Amplitude')
plt.show()
```
上述代码将samples数组进行快速傅里叶变换,得到频域表示fft,并使用plt.plot函数绘制其频谱图。最后,我们使用plt.show函数将图像显示出来。
完整代码如下:
```
import numpy as np
import matplotlib.pyplot as plt
# 创建信号
t = np.linspace(0, 1, 1000)
signal = np.sin(2 * np.pi * 10 * t) + np.sin(2 * np.pi * 20 * t) + np.sin(2 * np.pi * 30 * t)
# 对信号进行采样
sampling_rate = 100
samples = signal[::int(len(signal)/(sampling_rate*1.0))]
# 将信号转换为频域
freq = np.fft.fftfreq(len(samples)) * sampling_rate
fft = np.abs(np.fft.fft(samples))
# 绘制频谱图
plt.plot(freq, fft)
plt.xlabel('Frequency (Hz)')
plt.ylabel('Amplitude')
plt.show()
```