代码:MATLAB绘制二维概率密度和条件概率密度曲线
时间: 2024-04-29 08:27:03 浏览: 10
好的,您需要用MATLAB绘制二维概率密度和条件概率密度曲线,是吗?
对于绘制二维概率密度曲线,您可以使用MATLAB中的函数meshgrid和surf。以下是一个示例代码:
```matlab
% 定义二维正态分布的均值和协方差矩阵
mu = [0 0];
sigma = [1 0.5; 0.5 1];
% 生成x和y的网格矩阵
x = linspace(-3,3,100);
y = linspace(-3,3,100);
[X,Y] = meshgrid(x,y);
% 根据正态分布公式计算二维概率密度
Z = mvnpdf([X(:) Y(:)],mu,sigma);
Z = reshape(Z,size(X));
% 绘制二维概率密度曲面
surf(X,Y,Z);
xlabel('x');
ylabel('y');
zlabel('Probability density');
```
对于绘制条件概率密度曲线,您需要先根据给定的条件求出相应的边缘分布,然后再计算条件分布。以下是示例代码:
```matlab
% 定义二维正态分布的均值和协方差矩阵
mu = [0 0];
sigma = [1 0.5; 0.5 1];
% 生成x和y的网格矩阵
x = linspace(-3,3,100);
y = linspace(-3,3,100);
[X,Y] = meshgrid(x,y);
% 计算边缘分布
marginal_mu = mu(1) + sigma(1,2)/sigma(2,2)*(Y - mu(2));
marginal_sigma = sigma(1,1) - sigma(1,2)*sigma(2,1)/sigma(2,2);
marginal_pdf = normpdf(X,marginal_mu,sqrt(marginal_sigma));
% 计算条件分布
cond_pdf = mvnpdf([X(:) Y(:)],mu,sigma);
cond_pdf = reshape(cond_pdf,size(X));
for i = 1:length(y)
cond_pdf(:,i) = cond_pdf(:,i)/sum(cond_pdf(:,i));
end
% 绘制条件概率密度曲线
figure;
plot(x,marginal_pdf);
xlabel('x');
ylabel('Probability density');
title('Marginal distribution');
figure;
plot(x,cond_pdf(:,50));
xlabel('x');
ylabel('Conditional probability density');
title('Conditional distribution given y=0');
```
希望这些代码对您有所帮助!