特征矩阵联合相似对角化算法[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)的更多相关文章

  1. Eigen::Matrix与array数据转换

    1. 数组转化为Eigen::Matrix ]; cout << "colMajor matrix = \n" << Map<Matrix3i> ...

  2. eigen Matrix详解

    Eigen Matrix 详解 在Eigen中,所有的matrices 和vectors 都是模板类Matrix 的对象,Vectors 只是一种特殊的矩阵,行或者列为1. Matrix的前三个模板参 ...

  3. Eigen库矩阵运算使用方法

    Eigen库矩阵运算使用方法 Eigen这个类库,存的东西好多的,来看一下主要的几个头文件吧: ——Core 有关矩阵和数组的类,有基本的线性代数(包含 三角形 和 自伴乘积 相关),还有相应对数组的 ...

  4. Eigen介绍及简单使用

    博客转载自:https://blog.csdn.net/fengbingchun/article/details/47378515 Eigen是可以用来进行线性代数.矩阵.向量操作等运算的C++库,它 ...

  5. Eigen库笔记整理(一)

    首先熟悉Eigen库的用途,自行百度. 引入头文件: // Eigen 部分 #include <Eigen/Core> // 稠密矩阵的代数运算(逆,特征值等) #include < ...

  6. 使用Eigen遇到恶心报错

    参考博客:https://www.cnblogs.com/wongyi/p/8734346.html 1. 数据类型报错 /home/wy/workdir/slambook/ch3/useEigen/ ...

  7. eigen矩阵操作练习

    // // Created by qian on 19-7-16. // /* 相机位姿用四元数表示 q = [0.35, 0.2, 0.3, 0.1] x,y,z,w * 注意:输入时Quatern ...

  8. 机器人关节空间轨迹规划--S型速度规划

    关节空间 VS 操作空间 关节空间与操作空间轨迹规划流程图如下(上标$i$和$f$分别代表起始位置initial和目标位置final): 在关节空间内进行轨迹规划有如下优点: 在线运算量更小,即无需进 ...

  9. A Beginner’s Guide to Eigenvectors, PCA, Covariance and Entropy

    A Beginner’s Guide to Eigenvectors, PCA, Covariance and Entropy Content: Linear Transformations Prin ...

随机推荐

  1. 在CAD中插入谷歌地球卫星地图

    本文主要介绍如何在CAD中插入谷歌地球卫星地图,作为参照光栅图像.谷歌地球卫星地图使用“迈高图-地图数据下载器”(以下简称:迈高图)下载.迈高图会给出相关插入参数(插入点和缩放比例),保证插入卫星地图 ...

  2. Django框架第七篇(模型层)--多表操作:一对多/多对多增删改,跨表查询(基于对象、基于双下划线跨表查询),聚合查询,分组查询,F查询与Q查询

    一.多表操作 一对多字段的增删改(book表和publish表是一对多关系,publish_id字段) 增  create publish_id 传数字   (publish_id是数据库显示的字段名 ...

  3. 实现动态WEB内容

    在 system1 上配置提供动态web内容,要求: 1.动态内容由名为 wsgi.group8.example.com 的虚拟主机提供 2.虚拟主机侦听在端口 8909 3.从 http://ser ...

  4. Spring mvc请求处理流程详解(一)之视图解析

      本文链接:https://blog.csdn.net/lchpersonal521/article/details/53112728 前言 Spring mvc框架相信很多人都很熟悉了,关于这方面 ...

  5. Ambari深入学习(II)-实现细节

    在第一节中,我们简单讲了一下Ambari的系统架构.我们这一节主要分析Ambari的源代码,总览Ambari的具体实现方式及其工作细节. 一.Ambari-Server启动 Ambari-Server ...

  6. .net Dapper 实践系列(4) ---数据查询(Layui+Ajax+Dapper+MySQL)

    写在前面 上一小节,总结了数据显示时,会出现的日期问题.以及如何处理格式化日期.这个小节,主要总结的是使用Dapper 中的QueryMultiple方法依次显示查询多表的数据. 实践步骤 1.在Bo ...

  7. 无法定位 Local Database Runtime 安装。请验证 SQL Server Express 是否正确安装以及本地数据库运行时功能是否已启用。

    错误描述: 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接. (provide ...

  8. installer

    if (args.Length == 0) { ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new MyServi ...

  9. 利用nfs-client-provisioner动态提供Kubernetes后端存储卷

    原文:https://www.kubernetes.org.cn/3894.html 利用NFS client provisioner动态提供Kubernetes后端存储卷 本文翻译自nfs-clie ...

  10. git恢复已删的分支

    git恢复已经删除的分支 执行git命令, 找回之前提交的commit git log -g 执行效果 commit 80fd3a3e1abeab52030ee9f6ec32b5c815de20a9 ...