MATLAB画高斯混合分布
时间: 2023-08-25 21:04:34 浏览: 84
以下是一个简单的 MATLAB 代码,用于绘制高斯混合分布:
```matlab
% 设置高斯混合模型参数
mu1 = -1; sigma1 = 1;
mu2 = 1; sigma2 = 1;
p1 = 0.5; p2 = 0.5;
% 生成数据点
x1 = normrnd(mu1, sigma1, [1, 1000]);
x2 = normrnd(mu2, sigma2, [1, 1000]);
x = [x1, x2];
% 绘制数据点概率密度直方图
histogram(x, 'Normalization', 'pdf', 'BinWidth', 0.1, 'FaceAlpha', 0.6);
% 计算高斯混合概率密度函数
gm_pdf = p1 * normpdf(x, mu1, sigma1) + p2 * normpdf(x, mu2, sigma2);
% 绘制高斯混合概率密度函数曲线
x_range = -5:0.1:5;
hold on;
plot(x_range, gm_pdf(x_range), 'r-', 'LineWidth', 1.5);
% 绘制高斯混合概率密度函数核密度估计曲线
kde = fitdist(x', 'Kernel');
plot(x_range, pdf(kde, x_range), 'g-', 'LineWidth', 1.5);
% 显示图例和标题
legend('Data Point', 'GMM', 'KDE');
title('Gaussian Mixture Distribution');
```
这个代码与上面的 Python 代码相似,首先设置了两个高斯分布的均值和标准差,以及它们的权重。然后通过 `normrnd` 函数生成了 2000 个数据点,其中前 1000 个点来自第一个高斯分布,后 1000 个点来自第二个高斯分布。接着使用 `histogram` 函数绘制了这些数据点的概率密度直方图。
最后,计算了高斯混合模型的概率密度函数,并使用 `plot` 函数分别绘制了概率密度函数曲线和核密度估计曲线。最后,使用 `legend` 和 `title` 函数显示图例和标题。需要注意的是,在 MATLAB 中计算高斯混合模型的概率密度函数需要使用 `normpdf` 函数,而计算核密度估计曲线需要使用 `fitdist` 和 `pdf` 函数。