循环矩阵和BCCB矩阵与向量乘积的快速计算——矩阵向量乘积与频域乘积之间的转换

目录

  • 循环矩阵
    • 循环矩阵的定义
    • 特征值与特征向量
      • 循环矩阵的对角化
    • 循环矩阵与向量的乘积
  • BCCB矩阵
    • BCCB矩阵的定义
    • BCCB矩阵的对角化
    • BCCB 矩阵与向量的乘积
      • BCCB 矩阵与向量乘积的实现
  • 总结

循环矩阵(Circulant Matrix)和块循环对称矩阵(Block Circulant with Circulant Blocks, BCCB)是两种具有特殊结构的矩阵。循环矩阵和BCCB矩阵与向量的乘积可以利用快速傅里叶变换(FFT)来高效计算,解决大规模的线性系统问题。

循环矩阵

循环矩阵的定义

循环矩阵是一种特殊的方阵,它的每一行都是前一行向右循环移位一个位置的结果。如果矩阵 C C C n × n n \times n n×n的循环矩阵,那么它可以由第一行的 n n n个元素完全确定。假设 c 0 , c 1 , . . . , c n − 1 c_0, c_1, ..., c_{n-1} c0,c1,...,cn1是矩阵 C C C的第一行,则矩阵的形式如下:

C = [ c 0 c n − 1 … c 2 c 1 c 1 c 0 c n − 1 c 2 ⋮ c 1 c 0 ⋱ ⋮ c n − 2 ⋱ ⋱ c n − 1 c n − 1 c n − 2 … c 1 c 0 ] C = \begin{bmatrix} c_0 & c_{n-1} & \dots & c_2 & c_1 \\ c_1 & c_0 & c_{n-1} & & c_2 \\ \vdots & c_1 & c_0 & \ddots & \vdots \\ c_{n-2} & & \ddots & \ddots & c_{n-1} \\ c_{n-1} & c_{n-2} & \dots & c_1 & c_0 \\ \end{bmatrix} C= c0c1cn2cn1cn1c0c1cn2cn1c0c2c1c1c2cn1c0
一个 n × n n \times n n×n的循环矩阵 C C C可以完全由其第一行 c = [ c 0 , c 1 , . . . , c n − 1 ] c = [c_0, c_1, ..., c_{n-1}] c=[c0,c1,...,cn1]决定。

特征值与特征向量

循环矩阵 C C C的特征值可以通过离散傅里叶变换(DFT)来计算,具体来说,如果 c c c C C C的第一行,则 C C C的特征值为 λ k = ∑ j = 0 n − 1 c j e − i 2 π j k / n \lambda_k = \sum_{j=0}^{n-1} c_j e^{- i2\pi jk / n} λk=j=0n1cjei2πjk/n k = 0 , 1 , . . . , n − 1 k = 0, 1, ..., n-1 k=0,1,...,n1

利用 FFT,可以高效地计算循环矩阵的特征值和特征向量,从而实现矩阵的快速对角化。

循环矩阵的对角化

由于循环矩阵的所有特征向量是正交的,因此循环矩阵可以被对角化。

一个 n × n n×n n×n的循环矩阵 C C C可以通过离散傅里叶变换(DFT)矩阵 F F F进行对角化,即存在一个对角矩阵 Λ Λ Λ,使得:
C = F − 1 Λ F C = F^{-1} \Lambda F C=F1ΛF
其中, F F F是DFT矩阵, Λ \Lambda Λ是对角矩阵,其对角线上的元素是 C C C的特征值,这些特征值可以通过计算 C C C的第一行向量的DFT获得。

循环矩阵与向量的乘积

对于一个 n × n n \times n n×n的循环矩阵 C C C和一个 n n n维向量 x x x,计算 C x Cx Cx的过程可以通过快速傅里叶变换(FFT)来高效实现:

  1. 计算 c c c x x x的 FFT,分别得到 F ( c ) F(c) F(c) F ( x ) F(x) F(x)
  2. F ( c ) F(c) F(c) F ( x ) F(x) F(x)做逐元素相乘,得到结果 Y = F ( c ) ⊙ F ( x ) Y = F(c) \odot F(x) Y=F(c)F(x)
  3. Y Y Y应用逆 FFT (IFFT),得到最终结果 y = I F F T ( Y ) y = IFFT(Y) y=IFFT(Y)

这样,通过使用 FFT,可以高效地计算出循环矩阵与向量的乘积,避免了直接矩阵乘法带来的高计算复杂度。这种方法利用了 FFT 的高效性,将原本需要 O ( n 2 ) O(n^2) O(n2)复杂度的矩阵乘法降低到了 O ( n log ⁡ n ) O(n \log n) O(nlogn)的复杂度,极大地提高了计算效率。

BCCB矩阵

BCCB矩阵的定义

块循环对称矩阵(Block Circulant with Circulant Blocks, BCCB)是由多个循环矩阵(Circulant Matrix)组成的块矩阵(Block Circulant Matrix)。它在每个块上都具有循环矩阵的性质,并且这些块本身也按照循环矩阵的方式排列。

假设有一个大小为 n × n n \times n n×n的BCCB矩阵,其中每个块是一个大小为 m × m m \times m m×m的循环矩阵,则整个BCCB矩阵的大小为 n m × n m nm \times nm nm×nm

B = [ B 0 B n − 1 … B 2 B 1 B 1 B 0 B n − 1 B 2 ⋮ B 1 B 0 ⋱ ⋮ B n − 2 ⋱ ⋱ B n − 1 B n − 1 B n − 2 … B 1 B 0 ] B = \begin{bmatrix} B_0 & B_{n-1} & \dots & B_2 & B_1 \\ B_1 & B_0 & B_{n-1} & & B_2 \\ \vdots & B_1 & B_0 & \ddots & \vdots \\ B_{n-2} & & \ddots & \ddots & B_{n-1} \\ B_{n-1} & B_{n-2} & \dots & B_1 & B_0 \\ \end{bmatrix} B= B0B1Bn2Bn1Bn1B0B1Bn2Bn1B0B2B1B1B2Bn1B0

每个 B i B_i Bi都是一个 m × m m \times m m×m的循环矩阵。

BCCB矩阵的对角化

根据循环矩阵的性质,单个循环矩阵可以通过 FFT 对角化。同样地,BCCB 矩阵也可以通过对每个块进行 FFT 操作来对角化。BCCB矩阵的对角化可以通过两次应用DFT矩阵实现, F n F_n Fn用于处理块循环结构, F m F_m Fm用于处理每个循环矩阵块。这个过程可以形式化地表示为:
B = ( F n ⊗ F m ) − 1 Λ ( F n ⊗ F m ) B = (F_n \otimes F_m)^{-1} \Lambda (F_n \otimes F_m) B=(FnFm)1Λ(FnFm)
这里, ⊗ \otimes 表示Kronecker积, Λ \Lambda Λ是对角矩阵,包含BCCB矩阵的所有特征值。

BCCB 矩阵也可以通过适当的傅里叶变换矩阵 F n ⊗ F m F_n \otimes F_m FnFm ⊗ \otimes 表示克罗内克积)来对角化。 F n F_n Fn n × n n \times n n×n 的DFT矩阵, F m F_m Fm m × m m \times m m×m 的DFT矩阵。

BCCB 矩阵与向量的乘积

当考虑 BCCB 矩阵 A A A与向量 x x x的乘积 y = A x y = Ax y=Ax时,如果直接进行计算,计算复杂度为 O ( n 2 m 2 ) O(n^2m^2) O(n2m2),这在 n n n m m m较大时是非常高的。但是,利用 BCCB 矩阵可以对角化的性质,使用快速傅里叶变换(FFT)来降低计算复杂度到 O ( n m log ⁡ ( n m ) ) O(nm\log(nm)) O(nmlog(nm))

具体步骤如下:

  1. 计算向量 x x x n m nm nm维傅里叶变换 x ^ = ( F n ⊗ F m ) x \hat{x} = (F_n \otimes F_m)x x^=(FnFm)x
  2. 将对角矩阵 Λ A \Lambda_A ΛA x ^ \hat{x} x^相乘,得到 y ^ = Λ x ^ \hat{y} = \Lambda \hat{x} y^=Λx^
  3. 计算 y ^ \hat{y} y^的逆傅里叶变换 y = ( F n ⊗ F m ) − 1 y ^ y = (F_n \otimes F_m)^{-1}\hat{y} y=(FnFm)1y^

这样,我们就得到了 A x Ax Ax的结果 y y y,提高计算效率。

BCCB 矩阵与向量乘积的实现

对于一个 BCCB 矩阵 B B B与一个向量 x x x的乘积 B x Bx Bx,可以通过以下步骤高效地计算:

  1. 特征值计算
    构造矩阵 Z Z Z
    在这里插入图片描述
    在这里插入图片描述

  2. 向量重塑:首先,将向量 x x x重塑成 n × n n \times n n×n的矩阵形式 X X X
    在这里插入图片描述

  3. 二维 FFT:对矩阵 X X X进行二维 FFT 得到 F ( X ) F(X) F(X)
    在这里插入图片描述

  4. 点乘运算:将 F ( X ) F(X) F(X)与前面提到的对角化后的矩阵 Λ \Lambda Λ中对应的特征值进行逐元素点乘,得到新的矩阵 Y Y Y
    在这里插入图片描述

  5. 逆二维 FFT:最后,对 Y Y Y应用逆二维 FFT 得到最终结果 Y Y Y,再将 Y Y Y重新拉平为一个向量,即为 B x Bx Bx的结果。
    在这里插入图片描述

总结

循环矩阵和BCCB 矩阵的对角化和与向量的乘积都可以通过 FFT 相关技术高效地实现。这种高效的算法对于处理大规模数据集尤其重要,可以在保持计算精度的同时显著减少计算时间和资源消耗。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

(动画版)排序算法 -希尔排序

文章目录 1. 希尔排序(Shellsort)1.1 简介1.2 希尔排序的步骤1.3 希尔排序的C实现1.4 时间复杂度1.5 空间复杂度1.6 希尔排序动画 1. 希尔排序(Shellsort) 1.1 简介 希尔排序(Shells Sort),又…

蓝桥杯每日真题 - 第7天

题目:(爬山) 题目描述(X届 C&C B组X题) 解题思路: 前缀和构造:为了高效地计算子数组的和,我们可以先构造前缀和数组 a,其中 a[i] 表示从第 1 个元素到第 i 个元素的…

socketcan-goloang

模拟接收 模拟发送 package mainimport ("context""fmt""go.einride.tech/can""go.einride.tech/can/pkg/candevice""go.einride.tech/can/pkg/socketcan" )func main() {// linux系统设置// sudo ip link add dev can0 ty…

Java期末复习暨学校第五次上机课作业

Java期末复习暨学校第五次上机课作业:掌握类的定义、掌握类的封装、熟悉类的成员方法的调用。 第一题: 先定义两个整形变量x和y,然后showMessage方法打印防御塔的位置。 然后通过new关键字实例化了一个TowerDefense对象t1,并把x赋值为3&…

【目标检测】【Ultralytics-YOLO系列】Windows11下YOLOV5人脸目标检测

【目标检测】【Ultralytics-YOLO系列】Windows11下YOLOV5人脸目标检测 文章目录 【目标检测】【Ultralytics-YOLO系列】Windows11下YOLOV5人脸目标检测前言YOLOV5模型运行环境搭建YOLOV5模型运行数据集准备YOLOV5运行模型训练模型验证模型推理 总结 前言 Ultralytics YOLO 是一…

【启明智显分享】5G CPE与5G路由器到底有什么区别?

5G路由器和5G CPE在功能和应用场景上存在很明显的差异,小编做了详细比较,希望能帮助到你进一步了解他们的区别及应用。 一、定义与功能 5G路由器 5G路由器是一个将5G网络连接转换为Wi-Fi信号的设备,使多个Wi-Fi设备可以通过5G网络进行连接…

【go从零单排】File Paths文件路径

🌈Don’t worry , just coding! 内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。 📗概念 在 Go 中,处理文件路径通常使用 path/filepath 包。这个包提供了一系…

【数据分享】中国渔业统计年鉴(1979-2024) pdf

数据介绍 一、《中国渔业统计年鉴》以正式出版年份标序。其统计数据起讫日期:渔民家庭收支调查起讫时间为 2022年11月1日至2023年10月31日,其他数据起讫时间为2023年1月1日至2023年12月31日。 二、统计数据中,远洋渔业数据按照远洋渔业管理办法进行统计…

Windows10“大限”将至或加速政企信创进程

近日,微软公司正式宣布将于2025年10月14日终止对Windows 10系统的支持服务。Windows 10“退休”在即,信息安全风险陡增——对此,360织语的安全专家认为,对于政企用户而言,不管是选择继续使用Windows 10,还是…

文本嵌入方案大总结:从词向量到句向量

这里写目录标题 文本嵌入方案总结一、文本嵌入三种层次 词向量应用: 句向量应用: 扩展:文本嵌入和句子相似度、文本匹配的逻辑关系? 二、词向量有哪些方案、优缺点、工具?方案一:统计编码方案二&…

第23天Linux下常用工具(二)

目录 第四章 GDB调试工具 4.1gdb的作用 4.2调试代码的流程 4.3gdb的安装 4.4 gdb的使用 第五章 makefile工程管理工具 5.1makefile的作用 5.2makefile的运行 5.3make的安装 5.4makefile的编写方法 5.5makefile的语法 5.6makefile使用示例 第四章 GDB调试工具 4.1g…

ubuntu22.04与ubuntu24.10使用Remmina远程桌面共享

1. ubuntu22.04启用远程桌面共享 点击Remote Desktop,按下图设置 成功启用 2.ubuntu24.10远程桌面启用 选择远程桌面选项 启用远程桌面共享与远程控制 启用远程登陆

基于51单片机的高压锅控制系统proteus仿真

地址: https://pan.baidu.com/s/16BuxmKYUprTGbkEj_BWGvQ 提取码:1234 仿真图: 芯片/模块的特点: AT89C52/AT89C51简介: AT89C52/AT89C51是一款经典的8位单片机,是意法半导体(STMicroelectro…

D3的竞品有哪些,D3的优势,D3和echarts的对比

D3 的竞品 ECharts: 简介: ECharts 是由百度公司开发的一款开源的 JavaScript 图表库,提供了丰富的图表类型和高度定制化的配置选项。特点: 易于使用,文档详尽,社区活跃,支持多种图表类型(如折线图、柱状图、饼图、散点…

2024年11月13日

1.创业法律指南 留置权和其他三个权 定金和订金 一般保证和连带保证 1.案例 物权编之担保法律制度案例一 冯系养鸡专业户,为改建鸡会和引进良种需资金20万元。冯向陈借款10万元,以自己的一套价值10万元的音响设备抵押,双方立有抵押字据&a…

从电动汽车到车载充电器:LM317LBDR2G 线性稳压器在汽车中的多场景应用

附上LM317系列选型: LM317BD2TG-TO-263 LM317BTG-TO-220 LM317BD2TR4G-TO-263 LM317D2TG-TO-263 LM317D2TR4G-TO-263 LM317TG-TO-220 LM317LBDR2G-SOP-8 LM317LDR2G-SOP-8 LM317MABDTG-TO-252 LM317MABDTRKG-TO-252 LM317MA…

健康之路三度冲击港交所,数字健康医疗平台IPO前景引关注

健康之路股份有限公司(HealthyWay Inc.)再次向港交所递交招股书,拟在主板上市。此前两次尝试未果,但公司用户基础坚实,业务覆盖广泛,包括健康医疗服务和企业服务及数字营销服务。股东阵容强大,营…

SpringCloud篇(配置中心 - Nacos)

目录 一、Nacos 配置中心 1. 统一配置管理 1.1. 在nacos中添加配置文件 1.2. 从微服务拉取配置 1.2.1. 引入nacos-config依赖 1.2.2. 添加bootstrap.yaml 1.2.3. 读取nacos配置 1.2.4. 页面访问 2. 配置热更新:两种 2.1. 方式一 2.2. 方式二 3. 配置共享…

vue2和vue3的区别详解

vue2 VS vue3 对比vue2vue3配置脚手架cmd命令行可视化方式创建脚⼿架组件通信props、$emit、provide、$arrts、EventBus等props、$emit、provide、inject、arrts等数据监听watch,computedwatch,watchEffect,computed双向绑定Object.definePropertyProxyAPI⽣命周期四个阶段befo…

高中数学:概率-相关运算性质

文章目录 一、概率定义二、运算性质三、事件相互独立四、频率与概率五、练习 一、概率定义 二、运算性质 基本性质 互斥事件的性质 对立事件性质 包含事件的性质 有交集但不包含的事件性质 三、事件相互独立 注意: 四、频率与概率 五、练习