MATLAB 绘制频率分布直方图及累积频率曲线

需要用到函数
randn
hist
histogram
cumsum

%% 绘制频率分布直方图及频率分布曲线
%% 修改日期 2022/5/17
clc
clear
close all

%% 生成随机数
y = randn(100,100);                                             %生成100*100的正态分布随机数
y = y(:);

%% 计算频数及其频率
x = -3.95:0.1:3.95;                                             %此处x用于指定所划分每个数据段的中间值
yy = hist(y,x);                                                 %计算频数
yy = yy/sum(yy);                                                %计算频率
yy = cumsum(yy);                                                %计算累积频率

%% 
figure(1)
hold on
yyaxis left
histogram(y,'binwidth',0.1,'FaceColor',[1 0.27 0.0],'EdgeColor',[1 1 1],'FaceAlpha',0.5);
xlim([-4 4])
ylim([0 500])
xlabel('variable')
ylabel('Counts')
set(gca,'FontSize',16);
ax = gca;
ax.YColor = 'black';

yyaxis right
plot(x,yy,'k-','linewidth',3)
ylim([0 1])
ylabel('Frequency')
set(gca,'FontSize',16);
ax = gca;
ax.YColor = 'black';

box on
h = figure(1);
set(h,'units','normalized','position',[0.1 0.05 0.3 0.35]);  

效果图:
在这里插入图片描述
在这里插入图片描述

### MATLAB绘制频率分布直方图的方法 在 MATLAB 中,可以通过 `hist` 或者更现代的函数 `histogram` 来实现频率分布直方图绘制。以下是详细的说明以及示例代码。 #### 使用 `hist` 函数绘制频率分布直方图 `hist` 是一个经典函数,用于计算数据分组并返回每组中的频数。通过这些频数可以进一步调整绘图样式来展示频率分布情况。 ```matlab % 清除环境变量 clc; clear; % 创建随机正态分布的数据集 x = randn(1000, 1); % 定义分组数量 (bins),这里设置为7组 [counts, centers] = hist(x, 7); % 绘制频率分布直方图 figure; bar(centers, counts / sum(counts)); % 将计数值转换成相对频率 title('Frequency Distribution Histogram'); xlabel('Data Values'); ylabel('Relative Frequency'); ``` 上述代码展示了如何利用 `hist` 计算数据分组及其对应的频数,并将其转化为相对频率以便于可视化[^1]。 #### 使用 `histogram` 函数绘制频率分布直方图MATLAB R2014b 开始推荐使用更为灵活的 `histogram` 函数替代传统的 `hist` 函数。它可以更加方便地控制图形属性。 ```matlab % 清除环境变量 clc; clear; % 创建随机正态分布的数据集 data = randn(1000, 1); % 设置分箱数目 numBins = 7; % 调用 histogram 函数创建频率分布直方图 figure; h = histogram(data, numBins, 'Normalization', 'probability'); % 添加标题和标签 title('Normalized Frequency Distribution Histogram using histogram Function'); xlabel('Value'); ylabel('Probability Density'); grid on; ``` 此方法不仅简化了操作流程还提供了额外选项比如 `'Normalization'` 参数可以直接指定是否显示概率密度而不是原始计数[^2]。 #### 结合理论分布曲线叠加 为了更好地理解实际样本与理想模型之间的差异,可以在直方图上覆盖一条代表特定分布类型的连续曲线。例如对于近似服从正态分布的数据: ```matlab % 获取正态分布的最佳拟合参数 [muHat, sigmaHat] = normfit(data); % 构建 x 值序列跨越整个数据范围 xFit = linspace(min(data), max(data), 100); % 对应位置处求解标准正态 PDF 的 y 值 yFit = pdf('Normal', xFit, muHat, sigmaHat); % 叠加正态分布曲线至现有图表之上 hold on; plot(xFit, yFit, '-r', 'LineWidth', 2); legend('Histogram','Fitted Normal Curve'); hold off; ``` 以上部分实现了基于估计得到均值 (`mu`) 和标准差(`sigma`) 下的标准正态分布的概率密度函数(PDF) 曲线绘制工作。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值