matlab 混合高斯分布随机数
时间: 2023-12-02 07:43:22 浏览: 202
Univariate Multimodal Random Number Generator:从混合高斯分布中生成随机数。-matlab开发
以下是使用Matlab生成混合高斯分布随机数的示例代码:
```matlab
% 定义混合高斯分布的参数
mu1 = [1 2];
sigma1 = [2 0; 0 0.5];
mu2 = [-3 -5];
sigma2 = [1 0; 0 1];
gm = gmdistribution([mu1; mu2], cat(3,sigma1,sigma2), [0.5 0.5]);
% 生成随机数
rng(1); % 设置随机数种子
Y = random(gm, 1000); % 生成1000个混合高斯分布的随机数
% 统计生成的随机数中属于 Component 1 的个数
compIdx = cluster(gm, Y);
numIdx1 = sum(compIdx == 1);
disp(numIdx1); % 输出:约为500
% 生成 Component 1 的随机数
Y1 = random(gm.ComponentDistribution(1), numIdx1);
```
上述代码中,首先定义了混合高斯分布的参数,包括两个分量的均值和协方差矩阵,以及它们的混合比例。然后使用`gmdistribution`函数创建一个混合高斯分布对象`gm`。接着使用`random`函数生成1000个混合高斯分布的随机数,并使用`cluster`函数将这些随机数分配到各个分量中,统计属于 Component 1 的随机数个数。最后使用`random`函数生成 Component 1 的随机数。
阅读全文