用matlab 在同一个图中画出正态分布和对数正态分布的密度函数和分布函数图像
时间: 2024-10-20 08:04:17 浏览: 39
在MATLAB中,你可以使用`normpdf`和`lognormpdf`函数来绘制正态分布(Normal Distribution)和对数正态分布(Lognormal Distribution)的密度函数曲线,以及使用直方图或累积分布函数(CDF)来展示它们的概率分布。以下是创建这两个图形的基本步骤:
1. 导入所需库和设置绘图范围:
```matlab
[x, y_norm] = linspace(-5, 5, 400); % 创建x轴数据点
y_lognorm = lognormpdf(x, 1); % 对数正态分布参数可以调整
% 设定绘图范围和标题
figure;
xlabel('X');
ylabel('Probability Density');
title('Density Function of Normal and Lognormal Distributions');
```
2. 绘制正态分布密度函数:
```matlab
plot(x, y_norm, 'b', 'LineWidth', 2, 'DisplayName', 'Normal Distribution');
hold on; % 保持当前会话以便在同一图中添加更多线
```
3. 绘制对数正态分布密度函数:
```matlab
plot(x, y_lognorm, 'r--', 'LineWidth', 2, 'DisplayName', 'Lognormal Distribution (lnormpdf)');
```
4. 创建直方图表示分布函数:
```matlab
histogram(randn(1000), 'BinWidth', 0.5, 'FaceColor', [0.7 0.7 0.7], 'EdgeColor', 'k'); % 使用随机生成的数据点
hold on;
legend('show'); % 显示图例
```
5. 绘制累积分布函数:
```matlab
[y_cdf_norm, x_cdf_norm] = ecdf(randn(1000)); % 正态分布CDF
[y_cdf_lognorm, x_cdf_lognorm] = ecdf(lognrnd(1, 1, 1000)); % 对数正态分布CDF
plot(x_cdf_norm, y_cdf_norm, 'b-', x_cdf_lognorm, y_cdf_lognorm, 'r--', 'DisplayName', 'Cumulative Distribution Functions');
```
6. 最后,显示和保存图表:
```matlab
grid on; % 添加网格线
xlim([-5, 5]); % 调整x轴范围
ylim([0, 0.5]); % 调整y轴范围
title('Both Distributions: Density and Cumulative Distribution Functions');
saveas(gcf, 'density_and_distribution_functions.png'); % 保存图片
```
阅读全文