Joint Approximative Diagonalization of Eigen matrix (JADE)
特征矩阵联合相似对角化算法[1]。
Cardoso于1993年提出的盲信号分离具有代表性的一种算法。是一种基于四阶累积量特征矩阵近似联合对角化盲分离算法。该算法将目标函数最大化问题等价于一组四阶累积量矩阵的特征矩阵的联合对角化问题,不仅大大简化了算法的计算复杂度,同时还有效提高了算法的分离性能。
原理
JADE算法原理就是将白化后的混合信号的四阶累积量矩阵(或二阶相关矩阵)通过U变换,压缩为一个对角矩阵,从而求解酉矩阵U。
白化
信号模型如式x(t) = As(t)所示,源信号之间相互统计独立。由于盲分离问题中,源信号的真实幅度不可解,为方便算法研究,一般通过去均值化等数学方法将各个源信号分量转化为零均值且方差为1的随机变量。白化数据是JADE算法的第一步,通过白化可以恢复信号之间的二阶独立性。对观测信号的相关矩阵进行特征分解:
白化矩阵:
白化信号有:
显然,矩阵 V 为正交矩阵。JADE 算法的目的就是寻找一个正交矩阵U = VJP ,使源信号分离:
其中 P为置换矩阵,J 为对角矩阵。
对照函数
根据四阶累积量的平方和性质易知,对照函数式(2.8)的最大化等价于除c(U) 所包含的四阶累积量之外的所有互累积量平方和的最小化,因此可以实现信号分离。然而对照函数的计算非常复杂,难以实用化。但所幸的是 Cardoso 证明,它与一组矩阵的联合对角化等价,而且这组矩阵包含了所有四阶累积量,因而不但减少了算法的运算量,同时还提高了算法的分离性能。
JADE
给定一个矩阵集合N={Nr|1≤r≤s},一个酉矩阵U对其联合对角化等价于下面目标函数的最大化:
一般情况下,矩阵集合N不能同时完全被酉矩阵U联合对角化,只能近似对角化,因此称之为联合近似对角化。定义矩阵集合:
Cardoso等人已证明,对于这个矩阵集存在如下等式:
则对照函数最大化问题转化成了一组矩阵的联合近似对角化问题。为进一步简化算法,Cardoso等已证明可将四阶累积量矩阵用特征矩阵表示。对于任一给定矩阵 ,定义矩阵
,
对于任意的K维具有四阶累积量的随机矢量z,存在K2个实数和N2个N×N阶特征矩阵Mi满足下式:
利用随机矢量z(t)的所有四阶累积量构造K2×K2矩阵Cz,对Cz作特征值分解即可得到特征值及特征矩阵(由N2维的特征向量反堆栈为N×N特征矩阵),将特征值按由大到小的顺序排列,取前K个特征值及对应的特征矩阵组成累积量特征矩阵集合,对这组矩阵进行近似联合对角化就可求得酉矩阵U,进而实现源信号的分离。
参考文献
[1] Cardoso J F, Souloumiac A. Blind Beamforming for non Gaussian Signals[J]. IEE Proc.-F, 1993, 140(6):362-370.
[2] 熊坤来. 盲分离及其在阵列信号处理中的应用研究[D]. 国防科学技术大学, 2015.
Joint Approximative Diagonalization of Eigen matrix (JADE)的更多相关文章
- Eigen::Matrix与array数据转换
1. 数组转化为Eigen::Matrix ]; cout << "colMajor matrix = \n" << Map<Matrix3i> ...
- eigen Matrix详解
Eigen Matrix 详解 在Eigen中,所有的matrices 和vectors 都是模板类Matrix 的对象,Vectors 只是一种特殊的矩阵,行或者列为1. Matrix的前三个模板参 ...
- Eigen库矩阵运算使用方法
Eigen库矩阵运算使用方法 Eigen这个类库,存的东西好多的,来看一下主要的几个头文件吧: ——Core 有关矩阵和数组的类,有基本的线性代数(包含 三角形 和 自伴乘积 相关),还有相应对数组的 ...
- Eigen介绍及简单使用
博客转载自:https://blog.csdn.net/fengbingchun/article/details/47378515 Eigen是可以用来进行线性代数.矩阵.向量操作等运算的C++库,它 ...
- Eigen库笔记整理(一)
首先熟悉Eigen库的用途,自行百度. 引入头文件: // Eigen 部分 #include <Eigen/Core> // 稠密矩阵的代数运算(逆,特征值等) #include < ...
- 使用Eigen遇到恶心报错
参考博客:https://www.cnblogs.com/wongyi/p/8734346.html 1. 数据类型报错 /home/wy/workdir/slambook/ch3/useEigen/ ...
- eigen矩阵操作练习
// // Created by qian on 19-7-16. // /* 相机位姿用四元数表示 q = [0.35, 0.2, 0.3, 0.1] x,y,z,w * 注意:输入时Quatern ...
- 机器人关节空间轨迹规划--S型速度规划
关节空间 VS 操作空间 关节空间与操作空间轨迹规划流程图如下(上标$i$和$f$分别代表起始位置initial和目标位置final): 在关节空间内进行轨迹规划有如下优点: 在线运算量更小,即无需进 ...
- A Beginner’s Guide to Eigenvectors, PCA, Covariance and Entropy
A Beginner’s Guide to Eigenvectors, PCA, Covariance and Entropy Content: Linear Transformations Prin ...
随机推荐
- sublime text 疑难解决
sublime text 白色边框方框解决方法 https://blog.csdn.net/weixin_43228019/article/details/82766316 Sublime Text提 ...
- 计算几何-凸包算法 Python实现与Matlab动画演示
凸包算法是计算几何中的最经典问题之一了.给定一个点集,计算其凸包.凸包是什么就不罗嗦了 本文给出了<计算几何——算法与应用>中一书所列凸包算法的Python实现和Matlab实现,并给出了 ...
- java中常见关键字的介绍
Java中类,属性,方法修饰符 public 公共访问权限,不但在本应用中可以放问,其他应用也可以访问.接口中的方法默认都是public的 protected 被protected修改的:可以被本类, ...
- win7安装镜像注入USB3.0,NVMe驱动
现在的新款主板和笔记本因为原生自带了USB3.0和NVMe,在安装WIN7的时候会出现进入安装界面后不识别USB设备且在硬盘列表中无法读取M.2类型的固态硬盘信息.导致这个现象的原因就是在WIN7安装 ...
- sparksql读取hive数据报错:java.lang.RuntimeException: serious problem
问题: Caused by: java.util.concurrent.ExecutionException: java.lang.IndexOutOfBoundsException: Index: ...
- JS中的if语句内如何加or使多个条件通过
if(a==1&&b==2){ //do something }//条件是a等于1 并且 b等于2时才能成立,两个条件必须同时满足 if(a==1||b==2){ //do som ...
- Oracle PLSQL数据导出csv的案例
之前项目运维人员碰到一个问题,需要写一个存储过程,把数据导出为csv文件,查了一些资料,帮他写成了一个PLSQL,今天拿出来分享一下,不足之处,欢迎指教. 数据背景: 用到两张表,一张存放单位组织名 ...
- CSS 滑动门案例
一.什么是滑动门特效 为了使各种特殊形状的背景能够自适应元素中文本内容的多少,出现了CSS滑动门技术.它从新的角度构建页面,使各种特殊形状的背景能够自由拉伸滑动,以适应元素内部的文本内容,可用性更强. ...
- Android为TV端助力记录EditText.setInputType的坑
如XML中设置android:inputType=”numberDecimal”在Java代码中仅设置setInputType(EditorInfo.TYPE_NUMBER_FLAG_DECIMAL) ...
- [LeetCode] 198. 打家劫舍II ☆☆☆(动态规划)
描述 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金.这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的.同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的 ...