使用python计算复信号的DFT

DFT公式说明

DFT的计算公式:

其中x(n)是离散时间信号,既可以是实信号也可以是复信号。k是频率的index;N是离散信号x(n)的长度,N也是DFT结果X(k)的长度。

DFT的含义是信号在各个频率分量的投影,投影可以理解为两个矢量的点乘。因此DFT的公式可以看作成两个序列的点乘:x(n)和sk(n):

x(n)是一个复数信号。sk(n)是一个复数序列,两个复数序列的点乘时要对其中一个信号进行取共轭:

使用python的numpy可以对两个数组进行点乘:

xk = sum(x*np.conjugate(s))

其中x是输入信号的数组,s是上文提到的sk(n)。两个数组元素相乘让后求和。

Python实现

我们要计算一个复数信号x(n)DFT:

其中k0 = 7,n的范围是[0,63]。

import numpy as np
import matplotlib.pyplot as plt

N = 64
k0 = 7
x = np.exp(1j*2*np.pi*k0/N*np.arange(N))
X = np.array([])

for k in range(N):
    s = np.exp(1j*2*np.pi*k/N*np.arange(N))
    X = np.append(X, sum(x*np.conjugate(s)))

plt.plot(np.arange(N), abs(X))
plt.show()

猜你喜欢

转载自blog.csdn.net/cyz_2014/article/details/85465436
dft
今日推荐