在MATLAB中从两位高斯生成数字

时间:2013-11-11 01:12:12

标签: matlab statistics machine-learning computer-vision

我是新手,请耐心等待。我正在尝试使用以下参数从高斯混合模型生成数据点:

mixGaussTrue.mean = [-1 1.5];
mixGaussTrue.cov = reshape([0.5 0.25],1,1,2);

现在我有一个变量,h决定使用哪个高斯。所以h是1(第一高斯)或2.所以说例如如果h为1,我如何从第一高斯生成值,平均值为-1,协方差为0.5?

我不能使用内置函数,而是为高斯编写等式。

所以我有

for i=1:300
    if h==1 
        data(1,i) = ( 1/( sqrt( 2*pi*mixGaussTrue.cov(:,:,1) ) ) ) * exp( - (((cData - 
        mixGaussTrue.mean(1,1))^2)/(2* mixGaussTrue.cov(:,:,1))) ) ;

非常感谢!

1 个答案:

答案 0 :(得分:1)

看起来你的两个高斯是一维的。

无论如何,您可以使用生成随机高斯变量的randn()

data(i)=mixGaussTrue.cov(h)*randn()+mixGaussTrue.mean(h)