当前位置: 首页 > news >正文

线性代数学习笔记8-1:复数矩阵与Hermite矩阵、酉矩阵、傅里叶矩阵和快速傅里叶变换FFT

即使是实矩阵,也可能有复特征值,因此矩阵运算中无法避免的会碰到复数

这里我们先特别关注复数矩阵的情况,并明确如何处理复矩阵,而在后续学习中一般只研究实矩阵,可以将其推广到复数情况

复向量的内积和共轭转置

对于复向量 x = [ x 1 x 2 ⋮ x n ] ∈ C n \mathbf{x}=\left[\begin{array}{c}x_{1} \\x_{2} \\\vdots \\x_{\mathrm{n}}\end{array}\right] \in \mathbf{C}^{n} x= x1x2xn Cn,其中每个分量都是复数

在实数情况下,我们学习过, x T x {\mathbf{x}}^{T} \mathbf{x} xTx表示 x \mathbf{x} x与自己的内积/点积,结果是一个正实数(向量 x \mathbf{x} x长度的平方)

  • 复向量的模长的平方:在 x \mathbf{x} x为复数情的况下不能再使用 x T x {\mathbf{x}}^{T} \mathbf{x} xTx复向量模长的平方应推广为 x ‾ T x \overline{\mathbf{x}}^{T} \mathbf{x} xTx,对于复向量,这是一个常见、很重要的运算
    具体带入可知, x ‾ T x \overline{\mathbf{x}}^{T} \mathbf{x} xTx的结果必然为非负实数(仅当 x = 0 \mathbf{x}=\mathbf 0 x=0 x ‾ T x = 0 \overline{\mathbf{x}}^{T} \mathbf{x}=0 xTx=0),这符合“模长平方”的数学意义: x ‾ T x = [ x ˉ 1 x ˉ 2 x ˉ 3 x ˉ 4 ] [ x 1 x 2 x 3 x 4 ] = ∣ x 1 ∣ 2 + ∣ x 2 ∣ 2 + ∣ x 3 ∣ 2 + ∣ x 4 ∣ 2 \overline{\mathbf{x}}^{T} \mathbf{x}=\left[\begin{array}{llll}\bar{x}_{1} & \bar{x}_{2} & \bar{x}_{3} & \bar{x}_{4}\end{array}\right]\left[\begin{array}{l}x_{1} \\ x_{2} \\ x_{3} \\ x_{4}\end{array}\right]=\left|x_{1}\right|^{2}+\left|x_{2}\right|^{2}+\left|x_{3}\right|^{2}+\left|x_{4}\right|^{2} xTx=[xˉ1xˉ2xˉ3xˉ4] x1x2x3x4 =x12+x22+x32+x42其中,对于复数 x i x_i xi x ˉ i x i = ∣ x i ∣ 2 \bar{x}_{i}x_i=\left|x_{i}\right|^{2} xˉixi=xi2(由于 ( a + i b ) ( a − i b ) = a 2 + b 2 (a+ib)(a-ib)=a^2+b^2 (a+ib)(aib)=a2+b2),可见,结果的每一项都是非负实数

例如,我们认为复向量 [ 1 i ] \left[\begin{array}{c}1 \\i\end{array}\right] [1i]模长的平方为2,因为 [ 1 − i ] [ 1 i ] = 2 \left[\begin{array}{ll}1 & -i\end{array}\right]\left[\begin{array}{c}1 \\i\end{array}\right]=2 [1i][1i]=2

  • 一般的,复向量的内积运算为 y H x \mathbf{y}^{H} \mathbf{x} yHx y H x = y ‾ T x = y ˉ 1 x 1 + y ˉ 2 x 2 + ⋯ + y ˉ n x n \mathbf{y}^{H} \mathbf{x}=\overline{\mathbf{y}}^{T} \mathbf{x}=\bar{y}_{1} x_{1}+\bar{y}_{2} x_{2}+\cdots+\bar{y}_{n} x_{n} yHx=yTx=yˉ1x1+yˉ2x2++yˉnxn
    y H x = 0 \mathbf{y}^{H} \mathbf{x}=0 yHx=0,说明两个复向量互相垂直/正交

可见,实数情况下的转置 x T \mathbf{x}^{T} xT,在复数情况下推广为共轭转置 x ‾ T = x H \overline{\mathbf{x}}^{T}=\mathbf{x}^{H} xT=xH,也称为Hermite转置

复数矩阵 Complex matrices 与Hermite转置

由上,矩阵的转置运算 A T \mathbf A^T AT,在复空间中推广为Hermite转置 A H \mathbf A^H AH

  • Hermite矩阵: A H = A ˉ T \mathbf A^H=\mathbf{\bar A}^T AH=AˉT

一般而言,从n维实空间 R n \mathbf{R}^{n} Rn,推广到n维复空间 C n \mathbf{C}^{n} Cn将各个转置运算换为Hermite转置即可,如:

Hermitian矩阵

  • 对称矩阵,实数下为 A = A T \mathbf A=\mathbf A^T A=AT复数下为 A = A H \mathbf A=\mathbf A^H A=AH,称为Hermitian矩阵

酉矩阵

  • 正交矩阵,实数下为 Q T Q = I \mathbf Q^T\mathbf Q=\mathbf I QTQ=I复数下为 Q H Q = I \mathbf Q^H\mathbf Q=\mathbf I QHQ=I,称为酉矩阵(unitary matrix)
    酉矩阵的列向量都是复向量,且构成复空间中的标准正交向量组,满足 q ‾ j T q k = { 0 j ≠ k 1 j = k \overline{\mathbf{q}}_{j}^{T} \mathbf{q}_{k}=\left\{\begin{array}{ll} 0 & j \neq k \\1 & j=k\end{array}\right. qjTqk={01j=kj=k

傅里叶矩阵

使用傅里叶矩阵,可以实现离散傅里叶变换DFT

离散傅里叶变换DFT X [ k ] = ∑ n = 0 N − 1 x [ n ] e − j 2 π N k n X[k]= \sum_{n=0}^{N-1} x[n] \mathrm{e}^{-\mathrm{j} \frac{2 \pi}{N} k n} X[k]=n=0N1x[n]ejN2πkn
离散傅里叶逆变换IDFT x [ n ] = 1 N ∑ k = 0 N − 1 x [ n ] e j 2 π N k n x[n]=\frac{1}{N}\sum_{k=0}^{N-1} x[n] \mathrm{e}^{\mathrm{j} \frac{2 \pi}{N} k n} x[n]=N1k=0N1x[n]ejN2πkn

长度为 n n n的离散向量 x n \boldsymbol x_n xn:

  • 做离散傅里叶变换DFT: F n x n \boldsymbol{F}_{n}\boldsymbol x_n Fnxn;(结果是 n × 1 n\times 1 n×1的列向量,第 k k k行来自于 F n \boldsymbol{F}_{n} Fn的第 k k k行与 x n \boldsymbol x_n xn相乘)
  • 做离散傅里叶逆变换IDFT: F n − 1 x n \boldsymbol{F}_{n}^{-1}\boldsymbol x_n Fn1xn

根据DFT和IDFT定义式,提取基本元素 ω = e j 2 π / n \omega=e^{j 2 \pi / n} ω=ej2π/n,从而得到n阶傅里叶矩阵 F n \boldsymbol{F}_{n} Fn
F n = [ 1 1 1 ⋯ 1 1 ω ω 2 ω ( n − 1 ) 1 ω 2 ω 4 ω 2 ( n − 1 ) ⋮ ⋱ 1 ω n − 1 ω 2 ( n − 1 ) ω ( n − 1 ) 2 ] \boldsymbol{F}_{n}=\left[\begin{array}{rrrrr} 1 & 1 & 1 & \cdots & 1 \\ 1 & \omega & \omega^{2} & & \omega^{(n-1)} \\ 1 & \omega^{2} & \omega^{4} & & \omega^{2(n-1)} \\ \vdots & & & \ddots & \\ 1 & \omega^{n-1} & \omega^{2(n-1)} & & \omega^{(n-1)^{2}}\end{array}\right] Fn= 11111ωω2ωn11ω2ω4ω2(n1)1ω(n1)ω2(n1)ω(n1)2 其中,基本元素 ω = e j 2 π / n \omega=e^{j 2 \pi / n} ω=ej2π/n的特点在于:

  • ω = e j 2 π / n \omega=e^{j 2 \pi / n} ω=ej2π/n是复元素,但模长为1,因此其幂次方仅对应于单位圆上的旋转;
  • 并且 ω = e j 2 π / n \omega=e^{j 2 \pi / n} ω=ej2π/n的相角,就是将一整圈单位圆( 2 π 2\pi 2π)划分为 n n n份得到的,从而 ω n = 1 \omega^{n}=1 ωn=1

傅里叶矩阵的性质

注意,n阶傅里叶矩阵 F n \boldsymbol{F}_{n} Fn满足:

  • 矩阵元素通项公式: ( F n ) i j = ω ( i − 1 ) ( j − 1 ) = ( e j 2 π / n ) ( i − 1 ) ( j − 1 ) \left(\boldsymbol{F}_{n}\right)_{ij}=\omega^{(i-1)(j-1)}=(e^{j 2 \pi / n})^{(i-1)(j-1)} (Fn)ij=ω(i1)(j1)=(ej2π/n)(i1)(j1),即第 i i i行第 j j j列元素的指数,由 ( i − 1 ) ( j − 1 ) (i-1)(j-1) (i1)(j1)相乘得到( i , j ∈ [ 1 , n ] i,j\in[1,n] i,j[1,n]
  • 有一定的对称性(满足 F n = F n T \boldsymbol{F}_{n}=\boldsymbol{F}_{n}^{T} Fn=FnT),但并不是Hermitian矩阵(复空间下不能算是对称矩阵,因为不满足 A = A H \boldsymbol{A}=\boldsymbol{A}^{H} A=AH
  • 傅里叶矩阵,各个列向量正交,但不是酉矩阵(列向量模长为 N \sqrt{N} N (复空间下不是“列向量标准正交”的正交矩阵)
    好处:列向量正交,可以将傅里叶矩阵分解为一系列稀疏矩阵(含有大量零元素),从而可以轻易做乘法、求逆
  • 由上,各列向量正交但模长为 N \sqrt{N} N ,整个矩阵除以 N \sqrt{N} N 可以得到酉矩阵 1 N F n \frac{1}{\sqrt{N}}\boldsymbol{F}_{n} N 1Fn(正交矩阵在复空间下的推广,列向量为复向量且标准正交)
  • 推论: F n − 1 = 1 N F n H F_n^{-1}=\frac{1}{N} F_n^{H} Fn1=N1FnH,或者说 1 N F n H F n = I \frac{1}{N} \boldsymbol{F}_{n}{ }^{H} \boldsymbol{F}_{n}=\boldsymbol{I} N1FnHFn=I
    证明:根据上面, 1 N F n \frac{1}{\sqrt{N}}\boldsymbol{F}_{n} N 1Fn为酉矩阵,其逆矩阵为 ( 1 N F n ) − 1 = ( 1 N F n ) H = 1 N F n H \left(\frac{1}{\sqrt{N}} F_n\right)^{-1}=\left(\frac{1}{\sqrt{N}} F_n\right)^{H}=\frac{1}{\sqrt{N}} F_n^{H} (N 1Fn)1=(N 1Fn)H=N 1FnH
    两步同乘以 1 N \frac{1}{\sqrt{N}} N 1,即可得到 F n − 1 = 1 N F n H F_n^{-1}=\frac{1}{N} F_n^{H} Fn1=N1FnH,证毕
    (ps. 这就是为什么DFT有系数 1 N \frac{1}{N} N1

例如,对于 F 4 = [ 1 1 1 1 1 e j ( π 2 ) e j ( π 2 ) 2 e j ( π 2 ) 3 1 e j ( π 2 ) 2 e j ( π 2 ) 2 ∗ 2 e j ( π 2 ) 2 ∗ 3 1 e j ( π 2 ) 3 e j ( π 2 ) 3 ∗ 2 e j ( π 2 ) 3 ∗ 3 ] = [ 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 ] \boldsymbol{F}_{4}=\left[\begin{array}{cccc} 1 & 1 & 1 & 1 \\ 1 & e^{j\left(\frac{\pi}{2}\right)} & e^{j\left(\frac{\pi}{2}\right) 2} & e^{j\left(\frac{\pi}{2}\right) 3} \\ 1 & e^{j\left(\frac{\pi}{2}\right) 2} & e^{j\left(\frac{\pi}{2}\right) 2 * 2} & e^{j\left(\frac{\pi}{2}\right) 2 * 3} \\ 1 & e^{j\left(\frac{\pi}{2}\right) 3} & e^{j\left(\frac{\pi}{2}\right) 3 * 2} & e^{j\left(\frac{\pi}{2}\right) 3 * 3} \end{array}\right]=\left[\begin{array}{cccc} 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{array}\right] =\left[\begin{array}{rrrr}1 & 1 & 1 & 1 \\1 & i & -1 & -i \\1 & -1 & 1 & -1 \\1 & -i & -1 & i\end{array}\right] F4= 11111ej(2π)ej(2π)2ej(2π)31ej(2π)2ej(2π)22ej(2π)321ej(2π)3ej(2π)23ej(2π)33 = 11111ii2i31i2i4i61i3i6i9 = 11111i1i11111i1i 各个列向量正交(内积 x i ˉ T x j = 0 \bar{\boldsymbol x_i}^T\boldsymbol x_j=0 xiˉTxj=0),但列向量的模长平方 x i ˉ T x i = 4 \bar{\boldsymbol x_i}^T\boldsymbol x_i=4 xiˉTxi=4
因此,可以修正得到一个酉矩阵: 1 2 F 4 = 1 2 [ 1 1 1 1 1 i − 1 − i 1 − 1 1 − 1 1 − i − 1 i ] \frac{1}{2}\boldsymbol{F}_{4}=\frac{1}{2}\left[\begin{array}{rrrr}1 & 1 & 1 & 1 \\1 & i & -1 & -i \\1 & -1 & 1 & -1 \\1 & -i & -1 & i\end{array}\right] 21F4=21 11111i1i11111i1i
酉矩阵 1 2 F 4 \frac{1}{2}\boldsymbol{F}_{4} 21F4(复数下的正交矩阵)的逆矩阵: 1 2 F 4 H \frac{1}{2}\boldsymbol{F}_{4}^H 21F4H(共轭转置即可)
满足 1 4 F 4 H F 4 = I \frac{1}{4} \boldsymbol{F}_{4}{ }^{H} \boldsymbol{F}_{4}=\boldsymbol{I} 41F4HF4=I

另外也可以验证 F 4 \boldsymbol{F}_{4} F4的逆矩阵: F 4 − 1 = 1 4 F 4 H = 1 4 [ 1 1 1 1 1 e − j ( π 2 ) e − j ( π 2 ) 2 e − j ( π 2 ) 3 1 e − j ( π 2 ) 2 e − j ( π 2 ) 2 ∗ 2 e − j ( π 2 ) 2 ∗ 3 1 e − j ( π 2 ) 3 e − j ( π 2 ) 3 ∗ 2 e − j ( π 2 ) 3 ∗ 3 ] F_{4}^{-1}=\frac{1}{4} {F}_{4}^H=\frac{1}{4}\left[\begin{array}{cccc} 1 & 1 & 1 & 1 \\ 1 & e^{-j\left(\frac{\pi}{2}\right)} & e^{-j\left(\frac{\pi}{2}\right) 2} & e^{-j\left(\frac{\pi}{2}\right) 3} \\ 1 & e^{-j\left(\frac{\pi}{2}\right) 2} & e^{-j\left(\frac{\pi}{2}\right) 2 * 2} & e^{-j\left(\frac{\pi}{2}\right) 2 * 3} \\ 1 & e^{-j\left(\frac{\pi}{2}\right) 3} & e^{-j\left(\frac{\pi}{2}\right) 3 * 2} & e^{-j\left(\frac{\pi}{2}\right) 3 * 3} \end{array}\right] F41=41F4H=41 11111ej(2π)ej(2π)2ej(2π)31ej(2π)2ej(2π)22ej(2π)321ej(2π)3ej(2π)23ej(2π)33

快速傅里叶变换FFT

快速傅里叶变换FFT可以大大减少DFT的计算量,下面从矩阵角度看待这个问题

FFT中,将N=64的DFT拆为两个N=32的DFT
从矩阵角度:

  • 傅里叶矩阵 F 64 \boldsymbol{F}_{64} F64 F 32 \boldsymbol{F}_{32} F32的基本元素有如下关系: w 64 2 = w 32 w_{64}^2=w_{32} w642=w32,可见 F 64 \boldsymbol{F}_{64} F64 F 32 \boldsymbol{F}_{32} F32有一定关系
  • 具体而言, [ F 64 ] = [ I D I − D ] [ F 32 0 0 F 32 ] [ P ] \left[\boldsymbol{F}_{64}\right]=\left[\begin{array}{rr} \boldsymbol{I} & \boldsymbol{D} \\ \boldsymbol{I} & -\boldsymbol{D} \end{array}\right]\left[\begin{array}{rr} \boldsymbol{F}_{32} & 0 \\ 0 & \boldsymbol{F}_{32} \end{array}\right][\boldsymbol{P}] [F64]=[IIDD][F3200F32][P]
  • 其中,置换矩阵 P = [ 1 0 0 0 ⋯ ⋯ 0 0 0 0 1 0 0 0 ⋮ 0 0 0 0 ⋯ ⋯ 1 0 0 1 0 0 ⋯ ⋯ 0 0 0 0 0 1 ⋯ ⋯ 0 0 ⋮ 0 0 0 0 ⋯ ⋯ 0 1 ] \boldsymbol{P}=\left[\begin{array}{cccccccc} 1 & 0 & 0 & 0 & \cdots & \cdots & 0 & 0 \\ 0 & 0 & 1 & 0 & & & 0 & 0 \\ & & & \vdots & & & & \\ 0 & 0 & 0 & 0 & \cdots & \cdots & 1 & 0 \\ 0 & 1 & 0 & 0 & \cdots & \cdots & 0 & 0 \\ 0 & 0 & 0 & 1 & \cdots & \cdots & 0 & 0 \\ & & & \vdots & & & & \\ 0 & 0 & 0 & 0 & \cdots & \cdots & 0 & 1 \end{array}\right] P= 100000000100010000000010001000000001 ,功能是将奇数次项(1,3,5)提到前面,将偶数次项(2,4,6)放到后面
    对角阵 D = [ 1 ω ω 2 ⋱ ω 31 ] \boldsymbol{D}=\left[\begin{array}{ccccc} 1 & & & & \\ & \omega & & & & \\ & & \omega^{2} & & \\ & & & \ddots & \\ & & & & \omega^{31} \end{array}\right] D= 1ωω2ω31
  • 计算量对比:
    原来对长度为 N N N的向量 x \boldsymbol x x直接做DFT,则 F 64 x \boldsymbol{F}_{64}\boldsymbol x F64x的计算量是 N × N N\times N N×N
    改写为FFT后,计算量是两个 F 32 x \boldsymbol{F}_{32}\boldsymbol x F32x再加上一些修正项,修正项主要来自于与对角矩阵D的乘法,大约为32次;并且 F 32 \boldsymbol{F}_{32} F32可进一步拆为两个 F 16 \boldsymbol{F}_{16} F16、再拆为四个 F 8 \boldsymbol{F}_{8} F8…最终,所有计算来自于修正项,FFT计算量为 ( N / 2 ) l o g 2 N (N/2)log_2N (N/2)log2N

相关文章:

  • java ssm创意设计分享系统
  • ABAP Debug 调试功能
  • 【PAT甲级】1124 Raffle for Weibo Followers
  • 数组 vector
  • JAVA中的进制与位运算
  • C++怎么判断windows系统是64位还是32位
  • 位图,布隆过滤器的原理和实现
  • java医用物资信息管理系统 ssm
  • 【ELFK】之消息队列kafka
  • 【PAT甲级】1153 Decode Registration Card of PAT
  • 五、JAVA基本数据类型
  • 线性代数学习笔记8-4:正定矩阵、二次型的几何意义、配方法与消元法的联系、最小二乘法与半正定矩阵A^T A
  • Postgres数据库使用any和all判断数组解决IN和NOT IN条件参数超限的问题
  • Kubernetes控制平面组件:Scheduler调度器
  • AtCoder Beginner Contest 266 ABC题解
  • [LeetCode] Wiggle Sort
  • CEF与代理
  • C语言笔记(第一章:C语言编程)
  • emacs初体验
  • ES10 特性的完整指南
  • input实现文字超出省略号功能
  • JAVA并发编程--1.基础概念
  • JS基础之数据类型、对象、原型、原型链、继承
  • Leetcode 27 Remove Element
  • Mithril.js 入门介绍
  • React组件设计模式(一)
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 前端技术周刊 2019-01-14:客户端存储
  • 前端面试题总结
  • 如何胜任知名企业的商业数据分析师?
  • 入手阿里云新服务器的部署NODE
  • 听说你叫Java(二)–Servlet请求
  • 写给高年级小学生看的《Bash 指南》
  • 延迟脚本的方式
  • 异常机制详解
  • Hibernate主键生成策略及选择
  • ​香农与信息论三大定律
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • (1)SpringCloud 整合Python
  • (9)目标检测_SSD的原理
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (顺序)容器的好伴侣 --- 容器适配器
  • (五)c52学习之旅-静态数码管
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • .NET Remoting学习笔记(三)信道
  • .net开发引用程序集提示没有强名称的解决办法
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • /usr/lib/mysql/plugin权限_给数据库增加密码策略遇到的权限问题
  • @Autowired标签与 @Resource标签 的区别
  • @ConditionalOnProperty注解使用说明
  • @EnableAsync和@Async开始异步任务支持