序列傅里叶变换

文章介绍了序列傅里叶变换(DFT)的概念,用于将有限长度的序列转换为频域表示。通过Python代码展示了如何使用numpy库进行DFT计算,并用实例解释了DFT的线性性质和信号时移。DFT在信号处理中用于分析频率成分和执行滤波等操作。
摘要由CSDN通过智能技术生成

序列傅里叶变换定义

序列傅里叶变换 (DFT) 是一种数学变换,它将一个有限长度的序列转换为其频谱表示。它使用一个复数数组表示序列的频谱,其中每个元素表示对应的频率成分的幅度和相位。

DFT 的公式为:

X[k] = ∑n=0 to N-1 x[n] * e^(-j2πkn/N)

其中,X[k] 是序列 x 的 DFT,x[n] 是序列 x 的第 n 个元素,N 是序列 x 的长度,k 是 DFT 的索引,e 是自然对数的底数。

DFT 可以用来分析序列中不同频率分量的幅度和相位,并且可以用来进行频域信号处理,例如降噪、滤波和提升信噪比等。

 Python实现序列傅里叶变换:

import numpy as np
import matplotlib.pyplot as plt

x = [1, 2, 3, 1, 2, 3, 1, 2, 3]
X = np.fft.fft(x)
# 计算序列 x 的频率范围
N = len(x)
f = np.linspace(0, 1, N)

# 绘制序列 x 的频谱图
plt.plot(f, np.abs(X))
plt.xlabel('Frequency (Hz)')
plt.ylabel('Amplitude')
plt.show()

 离散信号傅里叶变换的性质

离散信号傅里叶变换 (DFT) 是一种用来将时域信号转换为频域信号的工具。在数学上,DFT 定义为将一个序列 x[n] 的每个时间点转换为一个复数,使得这个序列能够被表示为一个幅度和相位的波形。

 python证明离散傅里叶线性性质:

import numpy as np
import matplotlib.pyplot as plt

# 建立信号 x[n] 和 y[n]
x = np.array([1, 2, 3, 4])
y = np.array([5, 6, 7, 8])

# 计算 x[n] 和 y[n] 的 DFT
X = np.fft.fft(x)
Y = np.fft.fft(y)

z = x + y
Z = np.fft.fft(z)
N2 = len(z)
f2 = np.linspace(0, 1, N2)

W = X + Y
f3 = np.linspace(0, 1, N2)

# 绘制序列 z 的频谱图
plt.plot(f2, np.abs(Z))
plt.xlabel('Frequency (Hz)')
plt.ylabel('Amplitude')
plt.title('DFT(x+y)')
plt.show()
plt.plot(f3, np.abs(W))
plt.xlabel('Frequency (Hz)')
plt.ylabel('Amplitude')
plt.title('DFT(x)+DFT(y)')
plt.show()

 观察上图发现图像相同。

Python实现信号时移:

import numpy as np
import matplotlib.pyplot as plt

# 建立单位冲击信号 x[n]
x = np.zeros(10)
x=[1,2,3,4,5]

# 计算 x[n-k0]
k0 = 3
y = np.concatenate((x[k0:], x[:k0]))

# 绘制 x[n] 和 x[n-k0] 的图像
plt.plot(x, label='x[n]')
plt.plot(y, label='x[n-k0]')
plt.legend()
plt.show()

np.concatenate 函数可以用来将多个数组拼接在一起。

在上述代码中,x[k0:] 表示从第 k0 个元素开始到最后一个元素的所有元素组成的数组,x[:k0] 表示从第一个元素到第 k0-1 个元素的所有元素组成的数组。 x为 [1, 2, 3, 4, 5],k0 为 3,则 x[k0:][3, 4, 5]x[:k0][1, 2]

将两个数组拼接起来,即得到了时移后的序列 x[n-k0]。如果 x 为 [1, 2, 3, 4, 5],k0为 3,则 x[n-k0] 为 [3, 4, 5, 1, 2]

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值