matlab 绘制正态分布图

目录

本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。

一、简单正态分布曲线

1、代码实现

cpp 复制代码
% 生成符合标准正态分布的随机数
data = randn(10000, 1);

% 计算平均值和标准差
mu = mean(data);
sigma = std(data);

% 绘制标准正态分布曲线
x = linspace(mu - 4*sigma, mu + 4*sigma, 100);
y = normpdf(x, mu, sigma);
plot(x, y, 'LineWidth', 2);
hold on;

% 在x轴上标示出距离平均值位置的1倍、2倍和3倍标准差值位置
line([mu-sigma, mu-sigma], [0, normpdf(mu-sigma, mu, sigma)], 'Color', 'r', 'LineStyle', '--');
line([mu+sigma, mu+sigma], [0, normpdf(mu+sigma, mu, sigma)], 'Color', 'r', 'LineStyle', '--');
line([mu-2*sigma, mu-2*sigma], [0, normpdf(mu-2*sigma, mu, sigma)], 'Color', 'g', 'LineStyle', '--');
line([mu+2*sigma, mu+2*sigma], [0, normpdf(mu+2*sigma, mu, sigma)], 'Color', 'g', 'LineStyle', '--');
line([mu-3*sigma, mu-3*sigma], [0, normpdf(mu-3*sigma, mu, sigma)], 'Color', 'b', 'LineStyle', '--');
line([mu+3*sigma, mu+3*sigma], [0, normpdf(mu+3*sigma, mu, sigma)], 'Color', 'b', 'LineStyle', '--');

2、结果展示

二、绘制不同分布区间的颜色

1、代码实现

cpp 复制代码
% 设置图形属性
xlabel('x');
ylabel('Probability Density');
title('Standard Normal Distribution');
legend('Standard Normal Distribution', '1\sigma', '2\sigma', '3\sigma');

x = -4:0.01:4; % x轴范围
y = normpdf(x, 0, 1); % 标准正态分布的概率密度函数

plot(x, y, 'b', 'LineWidth', 2); % 绘制蓝色曲线
hold on; % 保持图形窗口,以便后续添加标记和区域

mean_value = 0; % 平均值
std_value = 1; % 标准差

% 计算距离平均值位置的1倍、2倍和3倍标准差值
x1 = mean_value - std_value;
x2 = mean_value - 2 * std_value;
x3 = mean_value - 3 * std_value;
x4 = mean_value + std_value;
x5 = mean_value + 2 * std_value;
x6 = mean_value + 3 * std_value;

% 绘制标记
plot([x1, x1], [0, normpdf(x1, 0, 1)], 'r--', 'LineWidth', 1); %1倍标准差位置,红色虚线
plot([x2, x2], [0, normpdf(x2, 0, 1)], 'g--', 'LineWidth', 1); % 2倍标准差位置,绿色虚线
plot([x3, x3], [0, normpdf(x3, 0, 1)], 'm--', 'LineWidth', 1); % 3倍标准差位置,品红色虚线
plot([x4, x4], [0, normpdf(x4, 0, 1)], 'r--', 'LineWidth', 1); % 1倍标准差位置,红色虚线
plot([x5, x5], [0, normpdf(x5, 0, 1)], 'g--', 'LineWidth', 1); % 2倍标准差位置,绿色虚线
plot([x6, x6], [0, normpdf(x6, 0, 1)], 'm--', 'LineWidth', 1); % 3倍标准差位置,品红色虚线

% 绘制不同分布区间的颜色
area(x(x<x1), y(x<x1), 'FaceColor', [0.9 0.9 0.9]); % 平均值左侧区域,浅灰色
area(x(x>x6), y(x>x6), 'FaceColor', [0.9 0.9 0.9]); % 平均值右侧区域,浅灰色
area(x(x>=x1 & x<=x4), y(x>=x1 & x<=x4), 'FaceColor', [0.8 0.8 0.8]); % 1倍标准差区域,灰色
area(x(x>x4 & x<=x5), y(x>x4 & x<=x5), 'FaceColor', [0.7 0.7 0.7]); % 2倍标准差区域,深灰色
area(x(x>x5 & x<=x6), y(x>x5 & x<=x6), 'FaceColor', [0.6 0.6 0.6]); % 3倍标准差区域,更深灰色

legend('标准正态分布', '1倍标准差', '2倍标准差', '3倍标准差');
xlabel('x');
ylabel('概率密度');

hold off; % 取消保持图形窗口

2、结果展示

三、计算标准差分布的百分比

1、代码实现

cpp 复制代码
x = -4:0.01:4; % x轴范围
y = normpdf(x, 0, 1); % 标准正态分布的概率密度函数

plot(x, y, 'b', 'LineWidth', 2); % 绘制蓝色曲线
hold on; % 保持图形窗口,以便后续添加标记

mean_value = 0; % 平均值
std_value = 1; % 标准差

% 计算1倍、2倍和3倍标准差值位置
x_1std = [mean_value-std_value, mean_value+std_value];
x_2std = [mean_value-2*std_value, mean_value+2*std_value];
x_3std = [mean_value-3*std_value, mean_value+3*std_value];

% 绘制标记线段
plot(x_1std, [0, 0], 'r--', 'LineWidth', 1.5); % 1倍标准差位置,红色虚线
plot(x_2std, [0, 0], 'g--', 'LineWidth', 1.5); % 2倍标准差位置,绿色虚线
plot(x_3std, [0, 0], 'm--', 'LineWidth', 1.5); % 3倍标准差位置,品红色虚线

% 计算标准差分布的百分比
p_1std = normcdf(x_1std, mean_value, std_value);
p_2std = normcdf(x_2std, mean_value, std_value) - normcdf(x_1std, mean_value, std_value);
p_3std = normcdf(x_3std, mean_value, std_value) - normcdf(x_2std, mean_value, std_value);

% 标注百分比文本
text(mean_value+std_value, 0.05, sprintf('68.27%%'), 'HorizontalAlignment', 'center');
text(mean_value+2*std_value, 0.05, sprintf('95.45%%'), 'HorizontalAlignment', 'center');
text(mean_value+3*std_value, 0.05, sprintf('99.73%%'), 'HorizontalAlignment', 'center');


% 设置不同分布区间的颜色
fill([x_1std(1), x_1std(2), x_1std(2), x_1std(1)], [0, 0, max(y), max(y)], 'r', 'FaceAlpha', 0.2); % 1倍标准差区间,红色
fill([x_1std(2), x_2std(2), x_2std(2), x_1std(2)], [0, 0, max(y), max(y)], 'g', 'FaceAlpha', 0.2); % 1-2倍标准差区间,绿色
fill([x_2std(2), x_3std(2), x_3std(2), x_2std(2)], [0, 0, max(y), max(y)], 'm', 'FaceAlpha', 0.2); % 2-3倍标准差区间,品红色
fill([x_3std(2), max(x), max(x), x_3std(2)], [0, 0, max(y), max(y)], 'y', 'FaceAlpha', 0.2); % 大于3倍标准差区间,黄色

legend('标准正态分布', '1倍标准差', '2倍标准差', '3倍标准差');
xlabel('x');
ylabel('概率密度');

2、结果展示

相关推荐
kyriewen9 小时前
前端切图仔被 AI 新闻淹死的第 N 天,我用 TRAE Work 定时任务救了自己
前端·人工智能·trae
手写码匠9 小时前
华为云Flexus+DeepSeek征文|Dify 多 Agent 灰度发布实战:让每一次变更都“小步快跑、随时可回滚“
人工智能·深度学习·算法·aigc
MarkHD9 小时前
Stable Diffusion入门第19-20天:保存与分享你的工作流——第一阶段收官,从“能用”到“可复用”
java·开发语言·stable diffusion
火云牌神9 小时前
分层整洁架构:标准化工程目录结构,防范 AI 越界调用
人工智能·架构·ai编程·分层架构·vibecoding
云水初9 小时前
【agent篇】RAG 知识库构建避坑指南
开发语言·python·学习·agent·rag
2019一路前行9 小时前
Python 函数、循环语句
开发语言·python
新知图书9 小时前
8.1 智能体的心跳执行模式:以定时器为核心(智能体工程)
人工智能·agent·ai agent·智能体
墨心@9 小时前
阶段 4:事件总线
人工智能·语言模型·大语言模型·agent·codex·harness
AbrahamCS9 小时前
从角色协同到可运行图:Graph Engineer 与多智能体编排
前端·人工智能·智能体
MacroZheng9 小时前
几行代码给项目集成AI功能,Spring AI 2.0太香了!
java·人工智能·spring boot