三维正态分布matlab
时间: 2025-02-28 16:58:37 浏览: 65
### 如何在 MATLAB 中生成和绘制 3D 正态分布
为了实现三维正态分布的生成与可视化,在 MATLAB 中可以采用多变量正态分布函数 `mvnrnd` 来创建服从指定均值向量和协方差矩阵的数据集[^2]。
#### 创建数据样本
首先定义所需的参数,即平均数向量(mu)以及协方差矩阵(Sigma),接着调用 mvnrnd 函数来获取随机抽样点:
```matlab
% 定义均值向量 (维度为 d 的列向量)
mu = [0, 0];
% 定义协方差矩阵 (d×d 对称半正定矩阵)
sigma = [1 .5;
.5 1];
% 设置样本数量 N
N = 1e4;
% 使用 multivariate normal random numbers 函数生成数据
data = mvnrnd(mu, sigma, N);
```
上述代码片段展示了如何设置二维情况下的均值和协方差,并从中抽取大量样本用于后续处理。对于更高维的情况只需相应调整 mu 和 Sigma 即可。
#### 可视化散点图
有了这些数据之后就可以很容易地画出它们的空间分布状况了:
```matlab
figure();
scatter(data(:,1), data(:,2));
title('Scatter plot of bivariate Gaussian samples');
xlabel('X axis'); ylabel('Y axis');
axis equal;
grid on;
```
这段脚本会打开一个新的图形窗口并显示由之前产生的双变量高斯分布所组成的散点云图像。
然而要真正展示三维空间中的概率密度,则还需要进一步计算网格上的 PDF 值并且应用 surf 或 mesh 等命令来进行表面渲染:
```matlab
[X,Y] = meshgrid(linspace(-4,4,100)', linspace(-4,4,100)');
pos = [X(:) Y(:)];
Z = reshape(mvnpdf(pos,[0 0], eye(2)), size(X));
surf(X, Y, Z);
shading interp;
colorbar;
view([70 50]);
title('Bivariate Normal Distribution Surface Plot');
xlabel('X axis'); ylabel('Y axis'); zlabel('Probability Density Function Value');
```
此部分代码构建了一个细密的 X-Y 平面上的位置数组 pos ,并通过 mvnpdf 计算对应位置处的概率密度函数值 Z 。最后利用 surf() 函数将整个曲面呈现出来,同时设置了视角角度以便更好地观察整体形态特征。
阅读全文
相关推荐

















