要用Fourier进行傅里叶变换
时间: 2023-06-22 09:48:49 浏览: 101
好的,那么这里给出使用Fourier进行傅里叶变换的代码:
```python
# 导入库
import numpy as np
import matplotlib.pyplot as plt
# 定义信号
t = np.linspace(-1, 1, 1000)
f1 = np.sin(2 * np.pi * 5 * t) # 5Hz正弦信号
f2 = np.sin(2 * np.pi * 10 * t) # 10Hz正弦信号
x = f1 + f2 # 信号x为两个正弦信号的叠加
# 进行时移操作
delay = 0.5 # 时移0.5秒
x_delay = x * np.exp(-1j * 2 * np.pi * delay * t)
# 对原信号x和时移后的信号x_delay分别进行傅里叶变换
X = np.fft.fft(x)
X_delay = np.fft.fft(x_delay)
# 绘制幅度谱
plt.subplot(2, 1, 1)
plt.plot(np.abs(np.fft.fftshift(X)))
plt.title('幅度谱:原信号x')
plt.subplot(2, 1, 2)
plt.plot(np.abs(np.fft.fftshift(X_delay)))
plt.title('幅度谱:时移后的信号x\_delay')
# 绘制相位谱
plt.subplot(2, 1, 1)
plt.plot(np.angle(np.fft.fftshift(X)))
plt.title('相位谱:原信号x')
plt.subplot(2, 1, 2)
plt.plot(np.angle(np.fft.fftshift(X_delay)))
plt.title('相位谱:时移后的信号x\_delay')
plt.show()
```
这段代码与之前的Matlab代码相比,只是在傅里叶变换的函数名上有所不同,使用了`np.fft.fft`和`np.fft.fftshift`。这两个函数分别实现了傅里叶变换和频谱移动操作。
阅读全文