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

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注