理论上,由于噪声的存在,自相关矩阵是正定的,而对于对称正定阵,它的奇异值分解等价于于特征值分解。

在之前看到的论文中,有用单边jacobi算法来求出矩阵特征值及特征向量,我在matlab上并没有实现,其中有条求theta的公式不知原作者是怎么得到的,在看了BLV阵列的文章后决定来用BLV阵列求特征值和特征向量。
BLV脉动阵列的方法如下,假设一n阶矩阵(n为偶数,若n为奇数可以加一行和一列“0”元素),将其分成(n/2)²个单元,每个单元是一个2x2阶的子矩阵。1.首先处理对角线上子矩阵,求出对应的theta_l和theta_r,并使用双边jacobi旋转(如果是对称阵则theta_l与theta_r相等)。


2.第二步,在上一步求出的theta_l和theta_r分别向行和列传递,非对角线上的二阶子矩阵在接受的角度theta后同样做双边jacobi旋转,使其对角化,如图1。
3.第三步,在所有子矩阵完成对角化后,交换元素位置,完成一轮操作;
交换规则如下:

4.第四步,判断非对角元素是否收敛,若收敛则停止算法,否则返回第一步。
BLV脉动阵列图:

其中,粗箭头表示传递角度theta细箭头表示元素交换位置
一开始,我也没有搞懂如何交换元素,举个例子吧,4x4阶矩阵交换元素的结果如下:

经过,这样的计算就可以求出矩阵的奇异值,但是矩阵的特征向量还没有求出,
在我看到的另一篇文章中(针对对称阵)采用了修正的BLV脉动阵列的特征向量求解方法。方法如下:
首先初始给出一个n阶单位矩阵,和求解特征值时一样,将单位阵分成2x2的子矩阵。修正的BLV脉动阵列图如下(6阶阵为例):

其中,theta1,theta2,theta3为算法第一步中求出的对角线上子矩阵的角度theta。求特征向量的方法和求奇异值一样,首先对所有子矩阵旋转,右乘R(θ);然后交换元素位置,完成一轮操作。交换规则如下:


下面为matlab计算结果:
输入矩阵A=[1 2 3 4;2 5 6 7;3 6 8 9;4 7 9 10];
matlab的SVD函数结果:
BLV阵列计算结果:

结果正确。
BLV脉动阵列方法优点:计算简单,并行度高,利于FPGA上实现且迭代次数少。

BLV脉动阵列实现矩阵SVD分解相关推荐

  1. 本质矩阵svd分解_SVD推荐系统

    整理一下近期学习推荐系统算法的思路,定位一下SVD在整个推荐系统框架中的位置: 首先,我们知道,任何推荐系统的整体大框架都是两部分:对某个用户user而言:首先是从数百万种Item中粗略的选出千级别的 ...

  2. Python中矩阵SVD分解及还原

    python中SVD分解及还原: import numpy as np from numpy import linalg as la S = np.zeros([5,5]) A=np.random.r ...

  3. matlab中矩阵SVD分解

    SVD分解 matlab中自带矩阵的SVD分解函数 [U,S,V] = svd(A) %返回一个与A同大小的对角矩阵S,两个酉矩阵U和V 其中,svd分解后,得到的是V的转置矩阵V'.分解后的U.S. ...

  4. 分布式大矩阵SVD分解

    4台机器,跑1万x1万数据,运行时间:链接 spark高级编程 这本书也有个这种大型稀疏矩阵的处理,SVD.数据是46G,上千万行,列是几万.大数据技术还是有技术方案来解决这方面的工作的.

  5. gemm() 与 gesvd() 到矩阵求逆(inverse)(根据 SVD 分解和矩阵乘法求矩阵的逆)

    可逆方阵 AA 的逆记为,A−1A^{-1},需满足 AA−1=IAA^{-1}=I. 在 BLAS 的各种实现中,一般都不会直接给出 matrix inverse 的直接实现,其实矩阵(方阵)的逆是 ...

  6. SVD分解和矩阵的Lipschitz条件等

    Lipschitz条件 可以用如下的公式来表示Lipschitz条件: ∣∣f(x)−f(y)∣∣≤K∣∣x−y∣∣||f(x)-f(y)||\leq K||x-y|| ∣∣f(x)−f(y)∣∣≤K ...

  7. 矩阵(一):SVD分解

    文章目录 0 参考链接(尊重原著) 1 SVD分解原理 2 SVD分解意义 3 SVD分解的应用 4 SVD数学举例 5 为什么Ax=0的解为最小奇异值对应的向量? 0 参考链接(尊重原著) 下面这个 ...

  8. 几种矩阵分解算法: LU分解,Cholesky分解,QR分解,SVD分解,Jordan分解

    目录 1.LU分解 2. LDLT分解法 3. Cholesky分解的形式 4. QR分解 5.SVD分解 5.1 SVD与广义逆矩阵 6. Jordan 分解 参考文章: ---------我只是搬 ...

  9. 矩阵分解 SVD分解

    在认识SVD之前,先来学习两个相关的概念:正交矩阵和酉矩阵. 如果,则阶实矩阵称为正交矩阵.而酉矩阵是正交矩阵往复数域上的推广. 判断正交矩阵和酉矩阵的充分必要条件是:.或者说正交矩阵和酉矩阵的共轭转 ...

最新文章

  1. 网路游侠:某软件版WEB应用防火墙试用
  2. python教程简易版_简洁的十分钟Python入门教程
  3. Python学会了,然后呢?
  4. ORACLE TEXT FILTER PREFERENCE(四)
  5. 数学除了摧残祖国的花朵外,竟然还可以赢钱!
  6. 深入浅出JMS(三)--ActiveMQ简单的HelloWorld实例
  7. distinct去重多个字段_sql中去重是distinct还是group by?
  8. 在eclipse中修改android源码
  9. Mysql更换版本的操作,非常详细(包括数据备份,卸载,安装,还原)
  10. eclipse中tomcat能正常启动,但是访问不了tomcat首页(问题解决)
  11. Java Web应用开发实用教程_Java Web应用开发实用教程
  12. Mediastream2 用法介绍及简明实例分析
  13. 重磅 | 2020年区块链领域全球授权专利报告
  14. AppStore下载数据查看
  15. 一天破万:二十一个微信公众号推广技巧
  16. 东北大学oj平台python答案_你觉得东北大学的Python考试怎么样?
  17. CSDN学霸课表——把Word的默认背景颜色由白色改为绿色
  18. 论文笔记-Reliable Supervision from Transformations for Unsupervised Optical Flow Estimation
  19. linux centos安装远程软件向日葵
  20. 电子凸轮实现哪些功能

热门文章

  1. 60.left join(左连接)
  2. 9.1 数据库事务概述
  3. Hadoop分布式计算框架MapReduce
  4. 展示一下用thinker做小软件的UI
  5. Linux的安装(手把手一步一步教学)
  6. 系统分析师论文5:论软件的系统测试及其应用
  7. 1367: [蓝桥杯2018初赛]付账问题
  8. JavaGuide-关于Dubbo的重要知识点
  9. 2019-9-2-自动机
  10. nmon结果分析工具_使用nmon analyzer 分析指标