Geeks_Z の Blog Geeks_Z の Blog
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)

Geeks_Z

AI小学生
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)
  • 线性代数

    • 线性代数知识点总结
    • 方程组的几何解释
    • 矩阵消元
    • 乘法和逆矩阵
    • 矩阵的LU分解
    • 转换、置换、向量空间R
    • 列空间和零空间
    • 求解Ax=0主变量——特解
    • 求解Ax=b 可解性和解的结构
    • 线性相关性、基、维数
    • 四个基本子空间
    • 矩阵空间、秩1矩阵和小世界图
    • 图和网络
    • 正交向量与子空间
    • 子空间投影
    • 投影矩阵和最小二乘
    • 正交矩阵和Gram-Schmidt正交化法
    • 行列式及其性质
    • 行列式公式和代数余子式
    • 克拉默法则、逆矩阵、体积
    • 特征值和特征向量
    • 对角化和$A$的幂
    • 微分方程
    • 马尔科夫矩阵、傅里叶级数
    • 对称矩阵及正定性
    • 对称矩阵及正定性
    • 复数矩阵和快速傅里叶变换
      • 复数矩阵运算
        • 计算复向量的模
        • 计算向量的内积
        • 对称性
        • 正交性
      • 傅里叶矩阵
      • 快速傅里叶变换(Fast Fourier transform/FFT)
    • 正定矩阵和最小值
    • 相似矩阵和若尔当形
    • 奇异值分解
    • 线性变换及对应矩阵
    • 基变换和图像压缩
    • 左右逆和伪逆
  • 概率论与数理统计

  • 矩阵

  • 分布

  • 数学笔记
  • 线性代数
Geeks_Z
2024-05-01
目录

复数矩阵和快速傅里叶变换

本讲主要介绍复数向量、复数矩阵的相关知识(包括如何做复数向量的点积运算、什么是复数对称矩阵等),以及傅里叶矩阵(最重要的复数矩阵)和快速傅里叶变换。

复数矩阵运算

先介绍复数向量,我们不妨换一个字母符号来表示:z=[z1z2⋮zn],向量的每一个分量都是复数。此时z不再属于Rn实向量空间,它现在处于Cn复向量空间。

计算复向量的模

对比实向量,我们计算模只需要计算|v|=vTv即可,而如果对复向量使用zTz则有zTz=[z1z2⋯zn][z1z2⋮zn]=z12+z22+⋯+zn2,这里zi是复数,平方后虚部为负,求模时本应相加的运算变成了减法。(如向量[1i],右乘其转置后结果为0,但此向量的长度显然不是零。)

根据上一讲我们知道,应使用|z|=z¯Tz,即[z¯1z¯2⋯z¯n][z1z2⋮zn],即使用向量共轭的转置乘以原向量即可。(如向量[1i],右乘其共轭转置后结果为[1−i][1i]=2。)

我们把共轭转置乘以原向量记为zHz,H读作埃尔米特(人名为Hermite,形容词为Hermitian)

计算向量的内积

有了复向量模的计算公式,同理可得,对于复向量,内积不再是实向量的yTx形式,复向量内积应为yHx。

对称性

对于实矩阵,AT=A即可表达矩阵的对称性。而对于复矩阵,我们同样需要求一次共轭A¯T=A。举个例子[23+i3−i5]是一个复数情况下的对称矩阵。这叫做埃尔米特矩阵,有性质AH=A。

正交性

在第十七讲中,我们这样定义标准正交向量:qiTqj={0i≠j1i=j。现在,对于复向量我们需要求共轭:q¯iTqj=qiHqj={0i≠j1i=j。

第十七讲中的标准正交矩阵:Q=[q1q2⋯qn]有QTQ=I。现在对于复矩阵则有QHQ=I。

就像人们给共轭转置起了个“埃尔米特”这个名字一样,正交性(orthogonal)在复数情况下也有了新名字,酉(unitary),酉矩阵(unitary matrix)与正交矩阵类似,满足QHQ=I的性质。而前面提到的傅里叶矩阵就是一个酉矩阵。

傅里叶矩阵

n阶傅里叶矩阵Fn=[111⋯11ww2⋯wn−11w2w4⋯w2(n−1)⋮⋮⋮⋱⋮1wn−1w2(n−1)⋯w(n−1)2],对于每一个元素有(Fn)ij=wiji,j=0,1,2,⋯,n−1。矩阵中的w是一个非常特殊的值,满足wn=1,其公式为w=ei2π/n。易知w在复平面的单位圆上,w=cos⁡2πn+isin⁡2πn。

在傅里叶矩阵中,当我们计算w的幂时,w在单位圆上的角度翻倍。比如在6阶情形下,w=e2π/6,即位于单位圆上60∘角处,其平方位于单位圆上120∘角处,而w6位于1处。从开方的角度看,它们是1的6个六次方根,而一次的w称为原根。

  • 我们现在来看4阶傅里叶矩阵,先计算w有w=i,w2=−1,w3=−i,w4=1,F4=[11111ii2i31i2i4i61i3i6i9]=[11111i−1−i1−11−11−i−1i]。

    矩阵的四个列向量正交,我们验证一下第二列和第四列,c2¯Tc4=1−0+1−0=0,正交。不过我们应该注意到,F4的列向量并不是标准的,我们可以给矩阵乘上系数12(除以列向量的长度)得到标准正交矩阵F4=12[11111i−1−i1−11−11−i−1i]。此时有F4HF4=I,于是该矩阵的逆矩阵也就是其共轭转置F4H。

快速傅里叶变换(Fast Fourier transform/FFT)

对于傅里叶矩阵,F6,F3、F8,F4、F64,F32之间有着特殊的关系。

举例,有傅里叶矩阵F64,一般情况下,用一个列向量右乘F64需要约642次计算,显然这个计算量是比较大的。我们想要减少计算量,于是想要分解F64,联系到F32,有[F64]=[IDI−D][F3200F32][1⋯0⋯0⋯1⋯1⋯0⋯0⋯1⋯⋱⋱⋱⋱⋯1⋯0⋯0⋯1]。

我们分开来看等式右侧的这三个矩阵:

  • 第一个矩阵由单位矩阵I和对角矩阵D=[1ww2⋱w31]组成,我们称这个矩阵为修正矩阵,显然其计算量来自D矩阵,对角矩阵的计算量约为32即这个修正矩阵的计算量约为32,单位矩阵的计算量忽略不计。

  • 第二个矩阵是两个F32与零矩阵组成的,计算量约为2×322。

  • 第三个矩阵通常记为P矩阵,这是一个置换矩阵,其作用是讲前一个矩阵中的奇数列提到偶数列之前,将前一个矩阵从[x0x1⋯]变为[x0x2⋯x1x3⋯],这个置换矩阵的计算量也可以忽略不计。(这里教授似乎在黑板上写错了矩阵,可以参考FFT (opens new window)、How the FFT is computed (opens new window)做进一步讨论。)

所以我们把642复杂度的计算化简为2×322+32复杂度的计算,我们可以进一步化简F32得到与F16有关的式子[I32D32I32−D32][I16D16I16−D16I16D16I16−D16][F16F16F16F16][P16P16][P32]。而322的计算量进一步分解为2×162+16的计算量,如此递归下去我们最终得到含有一阶傅里叶矩阵的式子。

来看化简后计算量,2(2(2(2(2(2(1)2+1)+2)+4)+8)+16)+32,约为6×32=log2⁡64×642,算法复杂度为n2log2⁡n。

于是原来需要n2的运算现在只需要n2log2⁡n就可以实现了。不妨看看n=10的情况,不使用FFT时需要n2=1024×1024次运算,使用FFT时只需要n2log2⁡n=5×1024次运算,运算量大约是原来的1200。

下一讲将继续介绍特征值、特征向量及正定矩阵。

上次更新: 2025/06/25, 11:25:50
对称矩阵及正定性
正定矩阵和最小值

← 对称矩阵及正定性 正定矩阵和最小值→

最近更新
01
帮助信息查看
06-08
02
常用命令
06-08
03
学习资源
06-07
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Geeks_Z | MIT License
京公网安备 11010802040735号 | 京ICP备2022029989号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式