消息关闭
    暂无新消息!
这段matlab程序之前已经在协方差矩阵的对角线加了一个很小的数,就是为了防止协方差矩阵的出现,得出来的结果却觉得也不对,混合高斯概率不应该是小于一的吗?我下面会贴出结果。

function gp=GaussianPDF(data,u,sigmai)
%UNTITLED3 此处显示有关此函数的摘要
%   此处显示详细说明
[m,n]=size(data); 
u=mean(data,1);
nxt_item(1:m)=0;  
tem_data=data-repmat(u,m,1);  
sigmai=sigma(data);
for i=1:m  
   pre_item=1/sqrt(((2*pi)^n)*abs(det(sigmai)+realmin));
   tem_data_t=tem_data(i,:)';  
   nxt_item(i)=exp(-0.5*(tem_data(i,:)*inv(sigmai)*tem_data_t)); 
end  
  
gp=pre_item*nxt_item;  
  
end  

下面是我的输入和结果
>> data=[1,2,3;4,5,6;7,8,9]

data =

     1     2     3
     4     5     6
     7     8     9
 u=mean(data,1)

u =

     4     5     6
>> sigmai=sigma(data)

sigmai =

    9.0000    9.0000    9.0000
    9.0000    9.0000    9.0000
    9.0000    9.0000    9.0000

>> GaussianPDF(data,u,sigmai)

ans =

   1.0e+03 *

    1.4823    2.4439    1.4823

我觉得这个结果不对,但又不知道如何继续

2个回答

︿ 1
已经在协方差矩阵对角线加上了很小的数,防止奇异矩阵的问题出现,但是这个结果也很奇怪,我还不知道问题出在哪儿