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、结果展示

相关推荐
AI小白的Python之路8 分钟前
数据结构与算法-排序
数据结构·算法·排序算法
aneasystone本尊15 分钟前
学习 Coze Studio 的工作流执行逻辑
人工智能
DashVector18 分钟前
如何通过Java SDK检索Doc
后端·算法·架构
aneasystone本尊24 分钟前
再学 Coze Studio 的智能体执行逻辑
人工智能
zzz93325 分钟前
transformer实战——mask
算法
xuanwuziyou26 分钟前
LangChain 多任务应用开发
人工智能·langchain
柯南二号40 分钟前
【Java后端】MyBatis-Plus 原理解析
java·开发语言·mybatis
新智元1 小时前
一句话,性能暴涨 49%!马里兰 MIT 等力作:Prompt 才是大模型终极武器
人工智能·openai
猫头虎1 小时前
猫头虎AI分享|一款Coze、Dify类开源AI应用超级智能体Agent快速构建工具:FastbuildAI
人工智能·开源·github·aigc·ai编程·ai写作·ai-native
一只鱼^_1 小时前
牛客周赛 Round 105
数据结构·c++·算法·均值算法·逻辑回归·动态规划·启发式算法