最大似然估计盲源分离算法及其matlab代码实现

时间:2023-02-13 15:55:24

最大似然估计盲源分离算法及其matlab代码实现

最大似然估计的物理意义
答:最大似然估计是在给定一组数据和一个参数待定的模型,如何确定模型的参数,使得这个确定参数后的模型在所有模型中产生已知数据的概率最大。通俗一点将,就是在什么情况下最有可能发生已知的事件。

根据盲分离模型最大似然估计盲源分离算法及其matlab代码实现: ,设盲分离矩阵为 W,则可以得到
最大似然估计盲源分离算法及其matlab代码实现
若记最大似然估计盲源分离算法及其matlab代码实现 为分离矩阵W 第 i行元素组成的向量,则理想情况下有最大似然估计盲源分离算法及其matlab代码实现 ,代入上式则有
最大似然估计盲源分离算法及其matlab代码实现
若有若干个观测值,则对若干个观测值去平均,则有似然函数为
最大似然估计盲源分离算法及其matlab代码实现
对上式取对数则有
最大似然估计盲源分离算法及其matlab代码实现
求上式的极值点,对分离矩阵W求导数有
最大似然估计盲源分离算法及其matlab代码实现
为了简单计算,不妨记:
最大似然估计盲源分离算法及其matlab代码实现
其中最大似然估计盲源分离算法及其matlab代码实现 表示求导数。
故可得
最大似然估计盲源分离算法及其matlab代码实现
然而,根据Amrai等人证实,对于盲信号分离矩阵来说,其参数空间符合黎曼空间的结构,而在黎曼空间中,自然梯度是定义在黎曼空间中的最陡下降方向,而并不是常规梯度(常规梯度是欧式空间中最佳下降方向)。而自然梯度的获取很简单,就是在常规的梯度基础上右乘矩阵最大似然估计盲源分离算法及其matlab代码实现 ,因此可得
最大似然估计盲源分离算法及其matlab代码实现
记盲源分离之后的结果为
最大似然估计盲源分离算法及其matlab代码实现
因此可以获得盲分离算法分离矩阵的迭代公式为
最大似然估计盲源分离算法及其matlab代码实现
其在线处理形式为
最大似然估计盲源分离算法及其matlab代码实现
上式中,评价函数一般取得
最大似然估计盲源分离算法及其matlab代码实现
至此,基于最大似然盲分离算法已经推导完毕。

基于最大似然盲分离的代码如下:

function w=zf_clms(Z,number)
%%
% x为输入的混合信号
% number为信号的个数
% /////////////////去均值和预白化处理////////////////////////////
[m,n]=size(Z);
% ///////////////////////////////////////////////////////

% 、、、、、、、、、、使用自然梯度分离信源、、、、、、、、、
%% separate
I = eye(number);
W = I;
lamda=0.005;
%%%%%%逐个点的运算---------------------
for sep_t = 1:n
y = W*Z(:,sep_t);
f = diag(y*y').*y;
% f=y-tanh(y);%混合高斯函数的刻画函数(亚高斯)。y+tanh(y)为修正的双曲正割函数平方的激活函数,f=-p'
/p其中p'表示的是求导数
g=y'
;
W = W+lamda*(I-f*g)*W; %这是用于在无噪条件下的梯度分离
end
%%%------------------------------------------------------
w=W;

具体使用的时候,迭代步长lamda的选择自己确定,若大了,可以将其变小