MIT_线性代数笔记:第 26 讲 复矩阵;快速傅里叶变换

目录

  • 复向量 Complex vectors
  • 复矩阵 Complex matrices
  • 傅里叶变换 Fourier transform
  • 快速傅里叶变换 Fast Fourier transform

实矩阵也可能有复特征值,因此无法避免在矩阵运算中碰到复数,本讲学习处理复数矩阵和复向量。

最重要的复矩阵是傅里叶矩阵,它用于傅里叶变换。而对于大数据处理快速傅里叶变换(FFT)显得更为重要,它将傅立叶变换的矩阵乘法中运算的次数从 n 2 n^2 n2次降至 n l o g 2 n nlog2^n nlog2n 次。

复向量 Complex vectors

对于给定的复向量 z = [ z 1 z 2 . . . z n ] ∈ C n z =\begin{bmatrix} z_1\\z_2\\...\\z_n \end{bmatrix}∈C^n z= z1z2...zn Cn ,其元素中有复数,因此 z T z z^Tz zTz 无法给出向量的长度。

例如 [ 1 i ] \begin{bmatrix} 1 & i \end{bmatrix} [1i] [ 1 i ] \begin{bmatrix} 1 \\ i \end{bmatrix} [1i] =0,则定义 ∣ z ∣ 2 = z ‾ T z = ∣ z 1 ∣ 2 \begin{vmatrix} z \end{vmatrix}^2 =\overline{z}^Tz =\begin{vmatrix} z_1 \end{vmatrix}^2 z 2=zTz= z1 2 + ∣ z 2 ∣ 2 \begin{vmatrix} z_2 \end{vmatrix}^2 z2 2+ . . . + ∣ z n ∣ 2 ...+\begin{vmatrix} z_n \end{vmatrix}^2 ...+ zn 2为向量长度。因此向量 [ 1 i ] \begin{bmatrix} 1 \\ i \end{bmatrix} [1i]的长度就是 [ 1 − i ] [ 1 i ] = 2 \begin{bmatrix} 1 & -i \end{bmatrix}\begin{bmatrix} 1 \\ i \end{bmatrix} =2 [1i][1i]=2,记 ∣ z ∣ 2 \begin{vmatrix} z \end{vmatrix}^2 z 2 = z ‾ T z \overline{z}^Tz zTz = z H z z^Hz zHz ,
H 来自于“Hermite”。 与之相似,内积的定义也变为 y H x = y ‾ T x y^Hx =\overline{y}^Tx yHx=yTx = y 1 ‾ x 1 \overline{y_1}x_1 y1x1 + y 2 ‾ x 2 \overline{y_2}x_2 y2x2 + . . . + y 1 ‾ x 1 ...+\overline{y_1}x_1 ...+y1x1

复矩阵 Complex matrices

上一讲中讲到了对于复矩阵 A,若有 A ‾ T = A \overline{A}^{_T}=A AT=A 则复矩阵 A 的特征值为实数。这种复矩阵被称为埃尔米特矩阵(Hermitian matrixes,又译作“厄米特矩阵”或者“厄米矩阵”)。转置共轭记作 A H = A ‾ T = A A^{_H}=\overline{A}^{_T}=A AH=AT=A

例如矩阵 [ 2 3 + i 3 − i 5 ] \begin{bmatrix} 2 & 3+i \\ 3-i & 5 \end{bmatrix} [23i3+i5]为埃尔米特矩阵。它具有实数特征值和正交的特征向量。由性质可知埃尔米特矩阵对角线均为实数。

此处向量标准正交的意思是
q j ‾ T q k = { 0 j ≠ k 1 j = k \overline{q_j}^{_T}q_k= \left\{ \begin{align*} &0 j≠k\\ &1 j=k \end{align*} \right. qjTqk={0j=k1j=k 用 n 个标准正交的复向量作为列向量可以构造一个矩阵 Q,则有 Q T Q = I = Q H Q Q^TQ=I=Q^HQ QTQ=I=QHQ。这个复空间的正交矩阵称为酉矩阵(unitary matrix)。

傅里叶变换 Fourier transform

傅里叶级数是将周期函数或者信号变换为不同频率的三角函数的和函数。
f ( x ) = a 0 + a 1 c o s x + b 1 s i n x + a 2 c o s 2 x + b 2 s i n 2 x + . . . f(x) = a_0 + a_1cosx + b_1sinx +a_2cos2x +b_2sin2x + ... f(x)=a0+a1cosx+b1sinx+a2cos2x+b2sin2x+...
在电子工程或者计算机科学中,n x n矩阵的行和列从第0行和第0列开始计数,最后到第 n-1 行和第 n-1 列。我们在讨论傅里叶矩阵的时候遵从这种习惯。

在这里插入图片描述
( F n ) j k = ω j k (F_n)_{jk}=ω^{jk} (Fn)jk=ωjk,傅里叶矩阵为对称矩阵 F n = F n T F_n=F_n^T Fn=FnT。矩阵中的 ω n = 1 , ω = e x p ( i 2 π / n ) ω^n=1,ω=exp(i2π/n) ωn=1,ω=exp(i2π/n)。矩阵的列向量正交。ω的方次分布在复平面的单位元上,只是幅角不同。当 n=4 时, ω 4 = 1 , ω = e x p ( i 2 π / 4 ) = i ω^4=1,ω=exp(i2π/4)=i ω4=1,ω=exp(i2π/4)=i
在这里插入图片描述
从矩阵可以得到一个四点(离散的)傅里叶变换,它的逆矩阵就是反傅里叶变换。因为傅里叶矩阵列向量正交,所以其逆矩阵很容易计算。实际上这个矩阵可以分解成一系列稀疏矩阵,并且它们的逆矩阵都很容易得到。
计算可知列向量的模不是 1,矩阵除以 2 之后,向量标准正交: 1 4 F 4 H F 4 = I \frac{1}{4}F_4^HF_4 = I 41F4HF4=I。它的逆矩阵就是共轭转置。

快速傅里叶变换 Fast Fourier transform

64 阶傅里叶矩阵 F 64 F_{64} F64中的 ω 64 ω_{64} ω64与 32 阶傅里叶矩阵 F 32 F_{32} F32的元素 ω 32 ω_{32} ω32相比,幅角是其一半, ( ω 64 ) 2 = ω 32 (ω_{64})^2=ω_{32} (ω64)2=ω32。可以从分块矩阵运算找到两者的联系:

在这里插入图片描述
P 的效果是使得所乘的向量 x 中序数为奇数的分量如 x 1 x_1 x1 x 3 x_3 x3 x 5 x_5 x5等提到前面,而偶数分量 x 2 x_2 x2 x 4 x_4 x4等放到后面。

计算 64 阶傅里叶变换(傅里叶矩阵乘以向量)的计算量是 6 4 2 64^2 642,而等式右侧的计算量是 2 × 3 2 2 2×32^2 2×322(两个 32 阶的傅里叶矩阵)再加上一些修正项,修正项主要来自于与对角矩阵 D 的乘法,大约为 32 次。继续对 F 32 F_{32} F32进行分解,计算的运算量再一次下降变为 2 × ( 2 × 1 6 2 + 16 ) + 32 2×(2×16^2+16)+32 2×(2×162+16)+32。连续进行拆分,傅里叶矩阵的尺寸变化依次为 64、32、16、8、4、2、1,经过 l o g 2 64 log_264 log264 次分解,最后仅剩修正项的运算, l o g 2 64 × 32 log_264×32 log264×32次。对于 n 阶矩阵,可将 n 2 n^2 n2次计算降至 ( n / 2 ) l o g 2 n (n/2)log_2n (n/2)log2n。例如对于 1024 阶矩阵,运算量从 1024×1024 降至 5×1024。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/239608.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux CentOS 7.6安装JDK详细保姆级教程

一、检查系统是否自带jdk java --version 如果有的话,找到对应的文件删除 第一步:先查看Linux自带的JDK有几个,用命令: rpm -qa | grep -i java第二步:删除JDK,执行命令: rpm -qa | grep -i java | xarg…

【Nuxt3】Nuxt3脚手架nuxi安装项目和项目目录介绍

简言 最近学了Nuxt3,并使用它创建了自己的小网站。记录下学习到的nuxt3内容。 Nuxt3官网 Nuxt 是一个免费的开源框架,可通过直观、可扩展的方式使用 Vue.js 创建类型安全、高性能、生产级的全栈 Web 应用程序和网站。 支持SSR、SPA、建立静态网站,也可以…

【大数据】Flink 详解(九):SQL 篇 Ⅱ

《Flink 详解》系列(已完结),共包含以下 10 10 10 篇文章: 【大数据】Flink 详解(一):基础篇【大数据】Flink 详解(二):核心篇 Ⅰ【大数据】Flink 详解&…

若依在表格中如何将字典的键值转为中文

文章目录 一、需求:二、问题解决步骤1、给需要转换的列绑定formatter属性2、获取字典项3、编写formatter属性绑定的方法 一、需求: 后端有时候返回的是字典的键值,在前端展示时需要转成中文值 后端返回的是dictValue,现在要转换…

QT -狗狗管理工具

QT -狗狗管理工具 一、演示效果二、UML三、关键代码四、程序链接 一、演示效果 二、UML 三、关键代码 #include <QFrame> #include <QHBoxLayout> #include <QVBoxLayout> #include <QLabel> #include <QSizePolicy> #include <QDialog> …

谷歌aab包在Android 14闪退而apk没问题(targetsdk 34)

问题原因 Unity应用(target SDK 34)上线到GooglePlay&#xff0c;有用户反馈fold5设备上&#xff08;Android14系统&#xff09;疯狂闪退&#xff0c;经测试&#xff0c;在小米手机Android14系统的版本复现成功了&#xff0c;奇怪的是apk直接安装没问题&#xff0c;而打包成aa…

为什么使用双token实现无感刷新用户认证?

单token机制 认证机制&#xff1a;对与单token的认证机制在我们项目中仅使用一个Access Token的访问令牌进行用户身份认证和授权的方案处理。 不足之处&#xff1a; 安全性较低(因为只有一个token在客户端和服务器端之间进行传递&#xff0c;一目Acess Token被截获或者被泄露…

MetaGPT前期准备与快速上手

大家好&#xff0c;MetaGPT 是基于大型语言模型&#xff08;LLMs&#xff09;的多智能体协作框架&#xff0c;GitHub star数量已经达到31.3k。 接下来我们聊一下快速上手 这里写目录标题 一、环境搭建1.python 环境2. MetaGpt 下载 二、MetaGPT配置1.调用 ChatGPT API 服务2.简…

Python武器库开发-武器库篇之Whois信息收集模块化(四十五)

Python武器库开发-武器库篇之Whois信息收集模块化(四十五) 我们在进行渗透的时候&#xff0c;需要进行全面的信息收集&#xff0c;除了主动信息收集之外&#xff0c;我们还经常会进行被动信息收集&#xff0c;Whois信息收集就是其中的一种,我们可以利用一些网站进行Whois信息收…

k8s 存储卷和pvc,pv

存储卷---数据卷 容器内的目录和宿主机的目录进行挂载。 容器在系统上的生命周期是短暂的&#xff0c;deletek8s用控制器创建的pod&#xff0c;delete相当于重启&#xff0c;容器的状态也会回复到初始状态。 一旦回到初始状态&#xff0c;所有的后天编辑的文件的都会消失。 …

rime中州韵小狼毫 LaTex输入法配置

教程目录&#xff1a;rime中州韵小狼毫须鼠管安装配置教程 保姆级教程 100增强功能配置教程 本文的分享一种在rime中州韵小狼毫须鼠管输入法中配置LaTex输入方案的方法&#xff0c;并不完美&#xff0c;仅供参考。 先睹为快 LaTex输入方案可以快捷的在公式模式下输入一些基础…

C#编程-使用事件

使用事件 事件是一个动作或发生的事情,例如:鼠标点击、按键、鼠标移动或系统产生的通知。应用程序可以在事件发生的时候做出响应。通知的一个示例是中断。事件是对象发生的消息以表示事件的发生。事件是进程内通信的有效方法。它们对对象时有用的,因为它们标识了单个状态改…

C#--核心

CSharp核心知识点学习 学习内容有&#xff1a; 绪论&#xff1a;面向对象的概念 Lesson1&#xff1a;类和对象 练习&#xff1a; Lesson2&#xff1a;封装--成员变量和访问修饰符 练习: Lesson3:封装--成员方法 Lesson4&#xff1a;封装--构造函数和析构函数 知识点四 垃圾回收…

OpenCV——图像按位运算

目录 一、算法概述1、逻辑运算2、函数解析3、用途 二、代码实现三、结果展示 OpenCV——图像按位运算由CSDN点云侠原创&#xff0c;爬虫自重。如果你不是在点云侠的博客中看到该文章&#xff0c;那么此处便是不要脸的爬虫。 一、算法概述 1、逻辑运算 OpenCV4 针对两个图像之…

查看服务器的yum 源

1、cd /etc/yum.repos.d 2、编辑 CentOS-Stream-Sources.repo 3、 查看里面的yum源地址 4、更新yum源&#xff0c;执行下面指令 yum clean all # 清除系统所有的yum缓存 yum makeacache # 生成新的yum缓存 yum repolist

SQL-用户管理与用户权限

&#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;重拾MySQL &#x1f379;文章作者技术和水平很有限&#xff0c;如果文中出现错误&am…

Qt/QML编程之路:Grid、GridLayout、GridView、Repeater(33)

GRID网格用处非常大,不仅在excel中,在GUI中,也是非常重要的一种控件。 Grid 网格是一种以网格形式定位其子项的类型。网格创建一个足够大的单元格网格,以容纳其所有子项,并将这些项从左到右、从上到下放置在单元格中。每个项目都位于其单元格的左上角,位置为(0,0)。…

Ubuntu共享文件到win

Ubuntu共享文件到win 1、安装samba sudo apt-get install samba samba-common2、创建一个共享文件夹&#xff0c;并设置777权限 mkdir /home/qyh/share sudo chmod 777 /home/qyh/share我的用户名&#xff1a;qyh。 3、添加用户及密码 sudo smbpasswd -a qyh4、修改配置文…

Android WiFi Service启动-Android13

Android WiFi Service启动 - Android13 1、SystemServer中入口2、WifiService启动2.1 关键类概要2.2 启动时序图 Android WiFi基础概览 AOSP > 文档 > 心主题 > WiFi概览 1、SystemServer中入口 编译生成对应的jar包&#xff1a;"/apex/com.android.wifi/javalib…

【C++】“Hello World!“

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:C ⚙️操作环境:Visual Studio 2022 ​ 2024.1.14 纪念一下自己编写的第一个C程序 #include<iostream>int main() {/*我的第一个C程序*/std::cout << "Hello world!:>" <<std::endl;ret…