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

在之前看到的论文中,有用单边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. 打包的时候不把配置文件加进去_webpack区分developement和production打包
  2. python 仪表盘-跟小白学Python数据分析——绘制仪表盘
  3. [JavaWeb] SSM框架 部署运行第一个Demo
  4. ubantu14.04下固定ip的配置方法以及问题处理
  5. Tornado之自定义session
  6. AI基础:第一部分提供打包下载了!
  7. 新浪微博和SAP CRM Interaction Center(呼叫中心)的集成
  8. 算法描述怎么写_管件材料描述怎么写
  9. delphi 最全日期格式_DateUtils时间单元说明
  10. xd使用技巧_魔兽世界怀旧服老玩家才会的治疗技巧,这四个技能需要看时机选择...
  11. JMeter性能测试工具简介
  12. VS2012手动关联xaml与CS文件
  13. go语言中错误处理方式
  14. 【物体检测】基于matlab GUI形态学物体检测【含Matlab源码 945期】
  15. Vue人资中台--打包上线
  16. dds导入Unreal 4
  17. 如何利用python画一些简单的图形
  18. 数学基础(二)——参数估计与矩阵运算基础
  19. 软件测试要学什么?软件测试学习路线资料分享
  20. ML笔记1——什么是ML;回归LossFunction(LF)推导;LF与凸函数关系;梯度下降推导;范数与正则化。

热门文章

  1. IAR for ARM系列教程(三)_菜单(Ⅰ)
  2. AR单片机编程软件的菜单栏功能及用法
  3. 二元函数对xy同时求导_更新丨10分钟掌握高等数学上册函数极限求解问题(考研、期末复习均可以用)...
  4. windows11虚拟机安装出现蓝屏
  5. php path separator,php_DIRECTORY_SEPARATOR 和 PATH_SEPARATOR
  6. python3 中_pickle (cPickle) 序列化 (Serialization)
  7. 万圣节html代码大全,基于Jquery实现万圣节快乐特效
  8. 英文pdf文件的翻译问题
  9. wchar_t的使用
  10. JDK14环境变量配置,JDK版本切换(Win10)