MATLAB绘制正态混合分布密度图的代码
时间: 2023-09-09 19:10:24 浏览: 164
以下是MATLAB绘制正态混合分布密度图的代码:
```matlab
%% 定义混合高斯分布参数
mu = [0 5]; % 均值
sigma = [1 2]; % 标准差
weight = [0.5 0.5]; % 每个分布的权重
%% 绘制混合高斯分布密度图
x = -10:0.1:15; % 自变量范围
y = weight(1)*normpdf(x,mu(1),sigma(1)) + weight(2)*normpdf(x,mu(2),sigma(2)); % 混合高斯分布函数
plot(x,y,'LineWidth',2); % 绘制混合高斯分布密度图
grid on;
title('混合高斯分布密度图');
legend('混合高斯分布');
```
你会发现,这段代码可以绘制出两个正态分布的混合分布密度图,其中一个分布的均值为0,标准差为1,权重为0.5;另一个分布的均值为5,标准差为2,权重也为0.5。
相关问题
MATLAB绘制二维概率密度和条件概率密度曲线和联合概率密度曲线
在MATLAB中,绘制二维概率密度函数(PDF)、条件概率密度函数(Conditional PDF)以及联合概率密度函数(Joint PDF)通常涉及使用`surf`、`contourf`、`quiver`等函数。以下是基本步骤:
1. **二维概率密度函数(PDF)**:
- 使用`surf(x,y,pdf)`命令,其中`x`和`y`是网格点的坐标,`pdf`是对应的概率值矩阵。
```matlab
[x, y] = meshgrid(-3:0.1:3, -3:0.1:3); % 创建网格
pdf = normpdf(x.^2 + y.^2, 0, 1); % 正态分布例子,中心(0,0),标准差1
surf(x, y, pdf)
```
2. **条件概率密度函数(Conditional PDF)**:
- 如果已知两个变量之间的关系,可以用直方图或图像显示条件概率。例如,给定X的条件下Y的概率,可以先计算出条件概率数组,然后用`imagesc`展示。
```matlab
% 假设X和Y服从某种联合分布,如高斯混合模型
[~, ~, pdf_x_given_y] = makedist('NormalMixture', 'NumComponents', 2);
[y, x_given_y] = ndgrid(y_values, pdf_x_given_y(condition));
imagesc(y, x_given_y)
```
3. **联合概率密度函数(Joint PDF)**:
- 可以同时画出两个随机变量的二维表面,使用相同的`surf`或`contourf`函数。
```matlab
[x, y] = meshgrid(x_values, y_values);
joint_pdf = joint_distribution(x, y);
surf(x, y, joint_pdf)
```
均匀分布和正态分布结合起来进行撒点的matlab代码
### 结合均匀分布和正态分布生成随机点
为了实现结合均匀分布和正态分布来生成随机点,在 MATLAB 中可以采用混合分布的方法。具体来说,可以通过加权组合两种不同类型的随机变量来创建新的随机数序列。
下面是一个简单的例子,展示了如何在 MATLAB 中通过线性组合的方式将这两种分布结合起来:
```matlab
% 设置参数
mu = 0; % 正态分布均值
sigma = 1; % 正态分布标准差
a = 0; % 均匀分布下限
b = 1; % 均匀分布上限
weight_normal = 0.7; % 正态分布权重
num_points = 1000; % 随机点数量
% 生成服从正态分布的样本
normal_samples = normrnd(mu, sigma, [1, num_points]);
% 生成服从均匀分布的样本
uniform_samples = unifrnd(a, b, [1, num_points]);
% 将两个分布按指定比例相加以形成最终的结果向量
combined_distribution = weight_normal * normal_samples + (1-weight_normal) * uniform_samples;
% 绘制直方图查看结果
figure;
histogram(combined_distribution,'Normalization','probability');
title('Combined Distribution Histogram');
xlabel('Value'); ylabel('Probability Density');
grid on;
```
这段代码首先定义了正态分布(`normrnd` 函数)和平稳分布(`unifrnd` 函数)各自的参数以及它们之间的相对贡献度 `weight_normal` 。接着分别调用这两个函数生成相应数量的数据点,并按照设定的比例求和得到一个新的数据集 `combined_distribution` ,最后绘制其概率密度直方图以便观察合成后的效果[^1]。
阅读全文
相关推荐
















