一维傅里叶变换python
时间: 2023-09-29 17:03:20 浏览: 85
以下是一维傅里叶变换的Python代码:
```python
import numpy as np
def dft(x):
"""
一维离散傅里叶变换(DFT)
Parameters:
x (array): 输入信号
Returns:
X (array): 变换后的信号
"""
N = len(x)
X = np.zeros(N, dtype=np.complex_)
for k in range(N):
for n in range(N):
X[k] += x[n] * np.exp(-2j * np.pi * k * n / N)
return X
```
该函数接受一个一维数组作为输入信号,并返回变换后的信号。在函数内部,我们首先获取输入信号的长度N,并创建一个N个元素为0的复数数组X。然后,我们使用两个嵌套的for循环来计算每个频率分量的复数值。对于频率分量k,我们在内部循环中遍历输入信号的每个元素n,并将其加到X[k]上。计算复数值时,我们使用欧拉公式exp(-2jπkn/N)来计算复数的实部和虚部。
以下是一个简单的示例,演示如何使用该函数:
```python
import matplotlib.pyplot as plt
# 生成信号
t = np.linspace(0, 1, 200)
x = np.sin(2 * np.pi * 5 * t) + np.sin(2 * np.pi * 10 * t)
# 进行DFT
X = dft(x)
# 绘制结果
freq = np.arange(len(x))
plt.stem(freq, np.abs(X))
plt.xlabel('Frequency')
plt.ylabel('Magnitude')
plt.show()
```
在此示例中,我们生成了一个具有5 Hz和10 Hz正弦波的信号,并使用dft函数进行了一维傅里叶变换。然后,我们使用matplotlib库绘制了变换后的信号。
阅读全文