主要内容

  • 复向量和复矩阵
  • 傅里叶矩阵

正文

这一讲主要介绍复数矩阵,其中一个最重要的例子就是傅里叶矩阵,它可以进行傅里叶变换。另外我们还会有快速傅里叶变换。

复向量和复矩阵

首先我们面对的问题是如何求复向量的模长。 我们可以回想一下,如何求一个复数的长度,比如: z 1 = a + b i z_1=a+bi z1=a+bi,那么 ∣ z 1 ∣ 2 = z 1 ˉ z 1 |z_1|^2=\bar{z_1}z_1 z12=z1ˉz1。对于向量,也是同样的方法,只不过还要遵循向量的乘法规律,也就是需要转置一下。那么求模长的公式,就比较显然了,对于复向量 z z z ∣ z ∣ 2 = z ˉ T z |z|^2=\bar{z}^Tz z2=zˉTz实际上可以简写为: ∣ z ∣ 2 = z H z |z|^2=z^Hz z2=zHz公式上的 H H H是埃尔米特 ( H e r m i t e ) (Hermite) (Hermite)的简称,意味着取共轭然后转置。那么,类似的就可以得到两个复向量的乘法公式了,比如复向量 x , y x,y x,y的乘积: y H x y^Hx yHx

复数下的对称矩阵。 在实矩阵中对于对称矩阵我们有 A T A A^TA ATA,但是在复矩阵中,对称矩阵满足 Z H = Z Z^H=Z ZH=Z,并且这样的矩阵我们称之为:埃尔米特矩阵。这样的矩阵的特征值都为实数,并且特征向量相互垂直。在实矩阵中我们将由相互垂直的向量组成的矩阵称为正交矩阵 Q Q Q,并且它满足 Q T Q = I Q^TQ=I QTQ=I。但是对于复矩阵,它的相互垂直的特征向量组成的矩阵 U U U,满足: U H U = I U^HU=I UHU=I。此外,它不叫正交矩阵,它交酉矩阵 ( U n i t a r y ) (Unitary) (Unitary)

傅里叶矩阵

我们先给出一个示例是一个 n × n n\times n n×n的傅里叶矩阵。傅里叶矩阵有一个特殊的地方那就是它的索引是从 0 0 0开始的,而不是从 1 1 1。如下: F n = [ 1 1 1 . . . 1 1 w w 2 . . . w n − 1 1 w 2 w 4 . . . w 2 ( n − 1 ) : : : : : 1 w n − 1 w 2 ( n − 1 ) . . . w ( n − 1 ) 2 ] F_n=\begin{bmatrix}1&1&1&...&1\\1&w&w^2&...&w^{n-1}\\1&w^2&w^4&...&w^{2(n-1)}\\:&:&:&:&:\\1&w^{n-1}&w^{2(n-1)}&...&w^{(n-1)^2}\end{bmatrix} Fn=111:11ww2:wn11w2w4:w2(n1).........:...1wn1w2(n1):w(n1)2我们可以发现,每一项 F i j = w i j i , j = 0 , 1 , 2... n − 1 。 F_{ij}=w^{ij}\qquad i,j=0,1,2...n-1。 Fij=wiji,j=0,1,2...n1其中: w = e 2 π n i w=e^{\frac{2\pi}{n}i} w=en2πi关于 w w w,我们可以计算得到 w n = 1 w^n=1 wn=1 n n n是矩阵的阶数。 w w w是位于单位圆上的,可以参考欧拉公式,了解更过的复数细节。这是一个一般性的例子,我们可以看一个实际数字的例子,比如当 n = 4 n=4 n=4的时候: F 4 = [ 1 1 1 1 1 i i 2 i 3 1 i 2 i 4 i 6 1 i 3 i 6 i 9 ] = [ 1 1 1 1 1 i − 1 − i 1 − 1 1 − 1 1 − i − 1 i ] F_4=\begin{bmatrix}1&1&1&1\\1&i&i^2&i^3\\1&i^2&i^4&i^6\\1&i^3&i^6&i^9\end{bmatrix}=\begin{bmatrix}1&1&1&1\\1&i&-1&-i\\1&-1&1&-1\\1&-i&-1&i\end{bmatrix} F4=11111ii2i31i2i4i61i3i6i9=11111i1i11111i1i这个矩阵的各列都是正交的,验证的时候注意复向量的正交和实向量的正交是不同的。由于矩阵的各列都是正交的,我们可以把这个矩阵分解成许多个稀疏矩阵。另外由于矩阵的各列都是正交的,我们得到 F 4 H F 4 = I F_4^HF_4=I F4HF4=I,所以我们很快就得到了矩阵的逆为 F 4 H F_4^H F4H

快速傅里叶变换

快速傅里叶变换是通过分解矩阵来减少计算消耗。具体的内容参考其他资料。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐