二维正态分布matlab代码
时间: 2023-11-25 10:48:13 浏览: 200
二维正态分布的Matlab代码可以使用mvnrnd函数生成随机的正态分布二维矩阵,然后使用scatter或plot函数绘制出来。以下是一个简单的例子:
```
mu = [0 0]; % 期望均值
sigma = [1 0.5; 0.5 2]; % 协方差矩阵
r = mvnrnd(mu, sigma, 100); % 生成100个样本
scatter(r(:,1), r(:,2)); % 绘制散点图
```
在这个例子中,我们使用了期望均值为[0,0],协方差矩阵为[[1,0.5],[0.5,2]]的二维正态分布生成了100个样本,并使用scatter函数绘制了散点图。你也可以使用plot函数绘制连续的曲线图。
相关问题
二维正态分布 matlab
在Matlab环境下,我们可以使用相关代码来绘制二维正态分布的数据点。首先,我们需要定义分布的参数,包括均值mu、标准差sigma和相关系数rou。然后,我们可以使用meshgrid函数创建一个网格,并计算联合概率密度函数。最后,我们可以使用surf函数绘制出二维正态分布的图像。
以下是一个示例代码:
```matlab
mu = [-1, 2]; % 均值
sigma1 = 1; % x方向的标准差
sigma2 = 1.5; % y方向的标准差
rou = 0.5; % 相关系数
x = linspace(-5, 5, 100); % x轴范围
y = linspace(-5, 5, 100); % y轴范围
[X, Y = meshgrid(x, y); % 创建网格数据
p = 1 / (2*pi*sigma1*sigma2*sqrt(1-rou^2)) .* exp(-1/(2*(1-rou^2)) .* ...
[(X-mu(1)).^2/(sigma1^2)-2*rou*(X-mu(1)).*(Y-mu(2))/(sigma1*sigma2) ...
(Y-mu(2)).^2/(sigma2^2)]); % 计算联合概率密度函数
figure;
surf(X, Y, p); % 绘制图像
shading interp;
colorbar;
ax = gca;
ax.Projection = 'perspective';
ax.LineWidth = 0.8;
ax.XMinorTick = 'on';
ax.YMinorTick = 'on';
ax.ZMinorTick = 'on';
ax.GridLineStyle = ':';
```
这段代码能够绘制出满足二维正态分布的数据点的图像,其中mu是均值,sigma1和sigma2分别是x和y方向的标准差,rou是相关系数。通过调整这些参数的值,可以获得不同形状的二维正态分布图像。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [matlab 生成二维或三维空间中满足正态分布的样本点,并绘图](https://blog.csdn.net/Jaster_wisdom/article/details/78125046)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [【数学建模】Matlab二维联合正态分布概率密度函数构造](https://blog.csdn.net/m0_65157892/article/details/129460703)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
matlab二维正态分布图代码
### 如何用 MATLAB 绘制 2D 正态分布图
为了绘制二维正态分布图,在MATLAB中可以通过定义均值向量和协方差矩阵来创建数据集,之后利用`meshgrid`函数生成网格坐标点,并通过计算这些点处的概率密度函数值来进行绘图。下面给出一段具体的实现代码:
```matlab
% 定义参数
mu = [0, 0]; % 均值向量
Sigma = [1, .5; .5, 1]; % 协方差矩阵
[X,Y] = meshgrid(-3:.2:3,-3:.2:3); % 创建网格
xy = [X(:) Y(:)];
% 计算多元正态概率密度
p = mvnpdf(xy,mu,Sigma);
P = reshape(p,size(X));
figure;
surf(X,Y,P,'EdgeColor','none');
title('Bivariate Normal Distribution')
xlabel('Variable X_1')
ylabel('Variable X_2')
zlabel('Probability Density Function Value')
colorbar
view(3)
axis square tight
```
此段程序首先设定了两个变量\(X\)和\(Y\)的范围以及步长,接着构建了一个由这两个变量组成的平面直角坐标系内的网格结构。对于每一个网格节点上的位置,都依据给定的均值向量\(\mu\)与协方差矩阵\Sigma计算对应的多维正态分布下的概率密度值[^2]。
阅读全文
相关推荐













