画高斯混合三维图 matlab 代码
时间: 2023-08-13 21:06:00 浏览: 512
以下是一个简单的 Matlab 代码,用于绘制高斯混合三维图:
```
% 设置高斯混合模型参数
mu1 = [-1 -1 -1];
sigma1 = [1 0 0; 0 1 0; 0 0 1];
mu2 = [1 1 1];
sigma2 = [1 0 0; 0 1 0; 0 0 1];
p1 = 0.5;
p2 = 0.5;
% 生成数据点
x1 = mvnrnd(mu1, sigma1, 100);
x2 = mvnrnd(mu2, sigma2, 100);
x = [x1; x2];
% 绘制散点图
scatter3(x(:,1), x(:,2), x(:,3), '.');
% 计算高斯混合概率密度函数
gm = fitgmdist(x, 2, 'RegularizationValue',0.1);
hold on;
ezsurf(@(x,y)pdf(gm,[x,y,0.5*ones(size(x))]),[-5 5],[-5 5]);
hold off;
```
这个代码首先设置了两个高斯分布的均值和协方差矩阵,以及它们的权重。然后通过 `mvnrnd` 函数生成了 200 个数据点,其中前 100 个点来自第一个高斯分布,后 100 个点来自第二个高斯分布。接着使用 `scatter3` 函数绘制了这些数据点的散点图。
最后,使用 `fitgmdist` 函数拟合高斯混合模型,并使用 `ezsurf` 函数绘制了高斯混合模型的概率密度函数图像。
阅读全文