一窥数字傅里叶变换矩阵 您所在的位置:网站首页 变换矩阵是什么意思 一窥数字傅里叶变换矩阵

一窥数字傅里叶变换矩阵

2024-07-04 07:03| 来源: 网络整理| 查看: 265

一窥数字傅里叶变换矩阵 前言DFT vs IDFT matrics酉矩阵特性矩阵DFT运算矩阵的值长什么样操练 总结参考

前言

DFT技术虽然很神奇,但总觉得是个黑洞,摸不着头脑,今天研究一下DFT matrix,能更加清楚的了解一些内核的东西。

DFT vs IDFT matrics

这是一个N*N方阵,矩阵的基本元素由 W = e − j 2 π / N W=e^{-j2\pi/N} W=e−j2π/N来构成,每个位置元素 a i j = W ( i − 1 ) ∗ ( j − 1 ) = e − j 2 π ( i − 1 ) ( j − 1 ) / N a_{ij}=W^{(i-1)*(j-1)}=e^{-j2\pi (i-1)(j-1)/N} aij​=W(i−1)∗(j−1)=e−j2π(i−1)(j−1)/N。即矩阵元素的索引是从自然数1开始的,但指数运算需要从0(据说现在小学已经把0化为自然数了。。。)开始。简单的列一下这个矩阵: W = [ e − j 0 e − j 0 e − j 0 ⋯ e − j 0 e − j 0 e − j 2 π / N e − j 4 π / N ⋯ e − j 2 ( N − 1 ) π / N e − j 0 e − j 4 π / N e − j 8 π / N ⋯ e − j 4 ( N − 1 ) π / N ⋮ ⋮ ⋮ ⋱ ⋮ e − j 0 e − j 2 ( N − 1 ) π / N e − j 4 ( N − 1 ) π / N ⋯ e − j 2 ( N − 1 ) ( N − 1 ) π / N ] = [ 1 1 1 ⋯ 1 1 e − j 2 π / N e − j 4 π / N ⋯ e − j 2 ( N − 1 ) π / N 1 e − j 4 π / N e − j 8 π / N ⋯ e − j 4 ( N − 1 ) π / N ⋮ ⋮ ⋮ ⋱ ⋮ 1 e − j 2 ( N − 1 ) π / N e − j 4 ( N − 1 ) π / N ⋯ e − j 2 ( N − 1 ) ( N − 1 ) π / N ] \bold W=\begin{bmatrix} e^{-j0} &e^{-j0} &e^{-j0} & \cdots & e^{-j0} \\ e^{-j0} &e^{-j2\pi /N} &e^{-j4\pi /N} & \cdots &e^{-j2(N-1)\pi /N} \\ e^{-j0} &e^{-j4\pi /N} &e^{-j8\pi /N} & \cdots &e^{-j4(N-1)\pi /N} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ e^{-j0} &e^{-j2(N-1)\pi /N} &e^{-j4(N-1)\pi /N} & \cdots & e^{-j2(N-1)(N-1)\pi /N} \end{bmatrix}\\ =\begin{bmatrix} 1 &1 &1 & \cdots & 1 \\ 1 &e^{-j2\pi /N} &e^{-j4\pi /N} & \cdots &e^{-j2(N-1)\pi /N} \\ 1 &e^{-j4\pi /N} &e^{-j8\pi /N} & \cdots &e^{-j4(N-1)\pi /N} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 1 &e^{-j2(N-1)\pi /N} &e^{-j4(N-1)\pi /N} & \cdots & e^{-j2(N-1)(N-1)\pi /N} \end{bmatrix} W=⎣⎢⎢⎢⎢⎢⎡​e−j0e−j0e−j0⋮e−j0​e−j0e−j2π/Ne−j4π/N⋮e−j2(N−1)π/N​e−j0e−j4π/Ne−j8π/N⋮e−j4(N−1)π/N​⋯⋯⋯⋱⋯​e−j0e−j2(N−1)π/Ne−j4(N−1)π/N⋮e−j2(N−1)(N−1)π/N​⎦⎥⎥⎥⎥⎥⎤​=⎣⎢⎢⎢⎢⎢⎡​111⋮1​1e−j2π/Ne−j4π/N⋮e−j2(N−1)π/N​1e−j4π/Ne−j8π/N⋮e−j4(N−1)π/N​⋯⋯⋯⋱⋯​1e−j2(N−1)π/Ne−j4(N−1)π/N⋮e−j2(N−1)(N−1)π/N​⎦⎥⎥⎥⎥⎥⎤​ 这个矩阵是主对角对称矩阵。即 W T = W \bold W^T=\bold W WT=W

酉矩阵特性

上述矩阵满足 W † W = N I \bold W^\dagger \bold W=NI W†W=NI 即厄米特共轭与原矩阵的乘积是N倍的单位阵。具有酉矩阵的特点(差了N倍,不知道失算uniary,还是paraunitary)。上面的式子还暗示了 W † / N = W − 1 \bold W^\dagger/N=\bold W^{-1} W†/N=W−1,另外一个推论是 W † = W ∗ \bold W^\dagger=\bold W^* W†=W∗

矩阵DFT运算

假设一组序列为 X = [ x ( 0 ) , x ( 1 ) , . . . x ( N − 1 ) ] T X=[x(0),x(1),...x(N-1)]^T X=[x(0),x(1),...x(N−1)]T,这组序列的DFT变换 X ( k ) = ∑ n = 0 N − 1 x ( n ) e − j 2 π k n / N = ∑ n = 0 N − 1 x ( n ) W k n = W X X(k) = \sum_{n=0}^{N-1}x(n)e^{-j2\pi kn/N} = \sum_{n=0}^{N-1}x(n) W^{kn} =\bold WX X(k)=n=0∑N−1​x(n)e−j2πkn/N=n=0∑N−1​x(n)Wkn=WX这里的n和k都是0开始的了。 x ( n ) = 1 N ∑ n = 0 N − 1 X ( k ) e j 2 π k n / N = 1 N ∑ n = 0 N − 1 X ( k ) W − k n x(n) =\frac{1}{N} \sum_{n=0}^{N-1}X(k)e^{j2\pi kn/N} =\frac{1}{N} \sum_{n=0}^{N-1}X(k)W^{-kn} x(n)=N1​n=0∑N−1​X(k)ej2πkn/N=N1​n=0∑N−1​X(k)W−kn

矩阵的值长什么样

我们利用python代码来一窥DFT矩阵的样子

pi = math.pi M = 16 W = np.exp((2*pi/M)*1j) nature = np.arange(M) DFT_Matrix = np.ones([M,M],np.complex) for row in range(M): DFT_Matrix[row]=W**(-nature*(row))

当M=2时,得到如下的值,最后一个值 e − j 2 π / 2 = − 1 e^{-j2\pi /2}=-1 e−j2π/2=−1

[1.+0.j 1.+0.j] [ 1.+0.0000000e+00j -1.-1.2246468e-16j]

M=4时,

[1.+0.j 1.+0.j 1.+0.j 1.+0.j] [ 1.0000000e+00+0.0000000e+00j 6.1232340e-17-1.0000000e+00j\n -1.0000000e+00-1.2246468e-16j -1.8369702e-16+1.0000000e+00j] [ 1.+0.0000000e+00j -1.-1.2246468e-16j 1.+2.4492936e-16j\n -1.-3.6739404e-16j] [ 1.0000000e+00+0.0000000e+00j -1.8369702e-16+1.0000000e+00j\n -1.0000000e+00-3.6739404e-16j 5.5109106e-16-1.0000000e+00j] 操练

根据【2】提供的图形,对256个点进行DFT变换,将时域频域画在一张图里,就差不多这个样子了。图中每个算法采样点换成256,然后增加几行代码:

Y = np.matmul(DFT_Matrix, y) y_idx = np.linspace(0, 2 * pi, 256) plt.plot(y_idx, np.absolute(Y))

在这里插入图片描述 在这里插入图片描述在这里插入图片描述纯属娱乐,但这个工具对于不要求运算速度的话,还是很直观的。

总结

这个小算法能够比较清晰的将DFT算子展现在你面前,帮助理解DFT的玄妙之处

参考

1.Multirate Systems and Filter Banks, P.Vaidyanathan 2.Python信号分析 | 信号的表示(二)【三角、复指数、矩形脉冲、阶跃】



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有