matlab生成5000个混合高斯分布的随机数
时间: 2023-07-29 18:05:55 浏览: 203
可以使用Matlab中的`random`函数来生成混合高斯分布的随机数。以下是一个生成5000个混合高斯分布的随机数的示例代码:
```matlab
% 混合高斯分布参数
mu = [-2 0 3]; % 均值
sigma = [1 0.5 0.8]; % 标准差
P = [0.3 0.5 0.2]; % 混合系数
% 生成随机数
rng(0); % 设定随机数种子
N = 5000; % 生成的随机数个数
X = zeros(1, N); % 存储生成的随机数
for i = 1:N
% 生成一个混合高斯分布的随机数
k = randsample(length(P), 1, true, P); % 随机选择一个高斯分布
X(i) = mu(k) + sigma(k) * randn(); % 从选择的高斯分布中生成一个随机数
end
% 绘制直方图
histogram(X, 'Normalization', 'pdf');
hold on;
% 绘制真实分布曲线
x = -10:0.1:10;
y = P(1) * normpdf(x, mu(1), sigma(1)) + ...
P(2) * normpdf(x, mu(2), sigma(2)) + ...
P(3) * normpdf(x, mu(3), sigma(3));
plot(x, y, 'r-');
legend('生成的随机数', '真实分布');
```
运行以上代码后,会生成5000个混合高斯分布的随机数,并绘制生成的随机数的直方图以及真实分布的曲线。
阅读全文