Hello堆栈溢出fam。我一直试图弄清楚如何在MATLAB上使用这个pesty fitgmdist来拟合高斯混合模型。我已经取得了进展,但在尝试设置初始参数时仍然出现错误。我得到以下错误:
初始协方差必须是具有K个页面的3D数组,当“共享协方差”#39;是 假。每个页面必须是一个方形矩阵,其列数与X相同 ' CovarianceType'是完整的',或长度等于数字的向量 X中的列如果'协方差类型'是对角线'
代码:
x=rand(5,1);
x=transpose(transpose(x));
y= sum (x);
x=x./y;
a=zeros(10000,1);
b=[1;2;3;4;5];
c=[1;2;4;8;16];
i=1;
for i=1:10000
a(i,1)=rand();
end
S = struct('mu',b,'Sigma',c,'ComponentProportion',x)
GMModel=fitgmdist(a,5,'Start', S)
我正在使用从unif(0,1)分布生成的10000个数字的随机数据集,假设初始比例也是从5个随机数生成的,意味着1,2,3,4和5以及sigmas 1 ,2,4,8,16。谢谢!
答案 0 :(得分:0)
问题出在你的struct S 中,协方差矩阵应该有5个页面,如错误信息中所述。解决方案示例:
...
c=zeros(1,1,5);
c(1,1,:) = [1;2;4;8;16];
...