这一讲我们来讲一下复矩阵。线性代数中,复矩阵是避免不了的话题,因为一个简单实矩阵都有可能有复数特征值。

复矩阵

我们着重看一下复矩阵和实矩阵在运算上的区别。

  1. 距离

首先,一个复数向量的的距离求法发生了变化
x ⊤ x → x H x \bm{x}^\top\bm{x}~~\rightarrow~~ \bm{x}^H\bm{x} x⊤x  →  xHx

其中, x H \bm{x}^H xH 指的是共轭转置。

相应的,内积也发生了变化

  1. 内积
    x ⊤ y → x H y \bm{x}^\top\bm{y}~~\rightarrow ~~ \bm{x}^H\bm{y} x⊤y  →  xHy

  2. 对称矩阵 symmetric matrix → \rightarrow → 厄米矩阵 Hermitian matrix

之前讲到对阵矩阵时说过,对称矩阵很好的性质在复数矩阵的情况下应该变为
A ⊤ = A → A H = A \bm{A}^\top=\bm{A}~~\rightarrow ~~ \bm{A}^H=\bm{A} A⊤=A  →  AH=A

  1. 正交矩阵 orthogonal matrix → \rightarrow → 酉矩阵 Unitary matrix

Q ⊤ Q = I → Q H = Q \bm{Q}^\top\bm{Q}=I~~\rightarrow ~~ \bm{Q}^H=\bm{Q} Q⊤Q=I  →  QH=Q

傅里叶矩阵

下面我们讲一下目前为止最重要的复数矩阵: 傅里叶矩阵 Fourier Matrix. 它实际上是傅里叶变换的矩阵形式。

定义

我们来看看什么是傅里叶矩阵
F n = [ 1 1 1 ⋯ 1 1 W 1 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 ] \bm{F}_n=\begin{bmatrix} 1 & 1 & 1& \cdots & 1\\ 1 & W^1 & W^2& \cdots & W^{n-1}\\ 1 & W^2 & W^4& \cdots & W^{2(n-1)}\\ \vdots & \vdots & \vdots & \vdots & \vdots\\ 1 & W^{n-1}& W^{2(n-1)}& \cdots& W^{(n-1)^2}\\ \end{bmatrix} Fn​=⎣⎢⎢⎢⎢⎢⎡​111⋮1​1W1W2⋮Wn−1​1W2W4⋮W2(n−1)​⋯⋯⋯⋮⋯​1Wn−1W2(n−1)⋮W(n−1)2​⎦⎥⎥⎥⎥⎥⎤​

可以看出,其中每一项 ( F n ) i j = W i j (F_n)_{ij}=W^{ij} (Fn​)ij​=Wij, i , i = 0 , 1 , 2 , . . . , n − 1 i,i=0,1,2,...,n-1 i,i=0,1,2,...,n−1, 其中 W W W 是复平面单元圆分割成 n n n 份得到的向量,即
W = e j 2 π n W=e^{j\frac{2\pi}{n}} W=ejn2π​

一个最简单的例子是 F 4 \bm{F}_4 F4​, 因为相位刚刚好取到坐标轴上,此时
F 4 = [ 1 1 1 1 1 i − 1 − i 1 − 1 1 − 1 1 − i − 1 i ] \bm{F}_4=\begin{bmatrix} 1 & 1 & 1& 1\\ 1 & i & -1 & -i\\ 1 & -1 & 1 & -1\\ 1 & -i& -1& i\\ \end{bmatrix} F4​=⎣⎢⎢⎡​1111​1i−1−i​1−11−1​1−i−1i​⎦⎥⎥⎤​

这个矩阵有什么特点尼?它是一个酉矩阵,且其中的每一项都是单位圆上的一个相位。
F n H F n = I \bm{F}_n^H\bm{F}_n=I FnH​Fn​=I

它的逆也很容易写出来
F n − 1 = F n H {\bm{F}}_n^{-1}= \bm{F}_n^H Fn−1​=FnH​

因此,傅里叶变换和逆傅里叶变换可以写成矩阵形式为
y = F n x \bm{y=F_n}\bm{x} y=Fn​x

x = F n H y \bm{x=F^{H}_n}\bm{y} x=FnH​y

快速傅里叶变换

长久以来,傅里叶变换的运算复杂度 O ( n 2 ) \mathcal{O}(n^2) O(n2) 对没有高速计算机的时代非常不友好。快速傅里叶变换 FFT 应运而生。FFT的基本原理是divide and conquer,就是把一个 高维的傅里叶变换用低维表示出来,看下图就很明了了。


从矩阵角度我们也能得到相似的结论,

即,把一个高维 F 64 F_{64} F64​ 分解为 三部分乘积,其中最右侧是一个permutation matrix,是对输入的 x \bm{x} x 做 odd-even shuffle,中间的是俩低维 F 32 F_{32} F32​ matrix组成的分块对角阵,左侧是butterfly network。这个分解与上图一一对应。

我们可以继续divide and conquer把FFT进一步分解直至最低维度,最终写成矩阵连乘结果,复杂度降为 O ( 1 2 n log ⁡ 2 n ) \mathcal{O} (\frac{1}{2}n\log_2 n) O(21​nlog2​n), 只要看下图就非常明了了。

MIT 线性代数 Linear Algebra 26:复矩阵,傅里叶矩阵, 快速傅里叶变换 FFT相关推荐

  1. MIT 线性代数 Linear Algebra 10: 矩阵的四个space

    这一节是相当于对之前所有内容的一个总括,也是对线性代数的研究对象 – 矩阵 – 的一个总结 (从vector space的角度). 这四个space分别是 Column space C ( A ) C ...

  2. MIT 线性代数 Linear Algebra 9: 向量空间的一些定义(线性独立,基,维度)

    本节内容都是一些定义,实际上我们之前已经接触过了.让我们总结一下: linear independent 线性独立 给定一组向量 {v1,v2,...,vn}\{\bm{v_1,v_2,...,v_n ...

  3. 【机器学习的数学基础】(二)线性代数(Linear Algebra)(中)

    文章目录 2 线性代数(Linear Algebra)(中) 2.4 向量空间 2.4.1 群 2.4.2 向量空间 2.4.3 向量子空间 2.5 线性独立 2.6 基和秩 2.6.1 生成集和基 ...

  4. 线性代数 -- Linear Algebra with Applications

    @.如果线性方程组无解,则称该方程组是不相容的(inconsistent). @.如果线性方程组至少存在一个解,则称该方程组是相容的(consistent). @.等价方程组(equivalent s ...

  5. 线性代数 linear algebra

    2.3 实现属于我们自己的向量 Vector.py class Vector: def __init__(self, lst): self._values = lst #return len def ...

  6. 线性代数基础12--对称矩阵,正定矩阵与快速傅里叶变换

    1,对称矩阵与正定矩阵 对于实对称矩阵,其特征值都是实数,其不同特征值对应的特征向量相互正交. 所以对于是对称矩阵,其特征矩阵可以用正交矩阵代替,也就是常说的对称矩阵可以用正交矩阵进行相似对角化, 并 ...

  7. 矩阵消元-线性代数课时2(MIT Linear Algebra , Gilbert Strang)

    这是Strang教授的第二讲,讲解了求线性方程组的一种系统方法:消元法(Gaussian elimination),它的核心思想是行变换.本课时的几个核心知识点:消元.回代.消元过程的矩阵描述和逆矩阵 ...

  8. 矩阵乘法和逆矩阵-线性代数课时3(MIT Linear Algebra , Gilbert Strang)

    这是Strang教授的第三讲,讲解的内容是矩阵乘法和矩阵的逆.矩阵乘法在前面已经使用过,本节课教授只是集中细致的讲解矩阵乘法满足的定律和几种计算矩阵乘法的方法,矩阵的逆是本节课的重要内容. 矩阵乘法 ...

  9. 列空间和零空间-线性代数课时6(MIT Linear Algebra , Gilbert Strang)

    这是Strang教授的第六讲,讲解的内容是线性代数里的俩个最重要向量子空间:列空间和零空间,同时还有上节课剩余的一点关于向量空间的问题.1.向量空间和子空间;2.列空间;3.零空间. 1.向量空间和子 ...

最新文章

  1. Gradle Goodness: Set Java Compiler Encoding--转载
  2. 【安装教程】windows8.1 下安装ubuntu14.04 双系统
  3. C++ STL算法系列4---unique , unique_copy函数
  4. 调整oracle数据库编码
  5. oracle的sum函数精度问题_Excel中的这些烧脑问题,你遇到过几种?
  6. [Iphone开发]如何在GDB中查看变量的值
  7. Java JDK中文帮助文档免费下载,百度网盘下载。
  8. 2020年系统集成项目管理工程师上午真题及答案(一)
  9. C++设计模式从入门到精通——实例说明
  10. 火车头采集器文章伪原创插件工具
  11. 互联网周刊咋么了呢?
  12. js获取当前指定的前几天的日期(如当前时间的前七天的日期)
  13. pytorch指定版本更新
  14. C语言中p, *p, p, *p, **p的理解-初级
  15. verilog specify语法
  16. 分享一个SlideShare:《做卓有成效的程序员》
  17. 北京、成都、大连、广州、杭州、南京、青岛、上海、深圳、苏州、天津、武汉、西安、郑州、重庆 15个城市地铁线及站点SHP文件
  18. Stanford CS107 Programming Paradigms 编程范式 课程笔记
  19. 使用SQL Server 获取插入记录后的自增ID(自动编号)
  20. django中的配置setting

热门文章

  1. Python中Selenium模块的使用
  2. 东山再起的男人一般都有这七个表现
  3. 怎么把PDF转换成PPT
  4. 解决微信小程序IOS中使用picker弹出内容和手机软键盘重叠的问题
  5. Javascript基础知识之四(常用数组方法)
  6. launch计算机上哪个初中,这位妈妈10年夏校经验告诉你:小学初中高中都该如何选择夏校?...
  7. 一图看懂平凡的世界人物关系
  8. python获取交换机信息
  9. python小操作——读取文件夹内的任意格式文件到txt并排序
  10. cookie与session区别