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



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

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))) ) ;

非常感谢!

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

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

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

最新更新