![50013a88440343ce81cde06aa934961f.gif](https://i-blog.csdnimg.cn/blog_migrate/d99ca90ce56102d8be6f61af2f40962d.gif)
频数表和直方图
一组数据(样本)往往是杂乱无章的,做出它的频数表和直方图,可以看作是对这组数据的一个初步整理和直观描述。
将数据的取值范围划分为若干个区间,然后统计这组数据在每个区间中出现的次数,称为频数,由此得到一个频数表。以数据的取值为横坐标,频数为纵坐标,画出一个阶梯形的图,称为直方图,或频数分布图。
若样本容量不大,能够手工做出频数表和直方图,当样本容量较大时则可以借助Matlab 软件。让我们以下面的例子为例,介绍频数表和直方图的作法。
【例1】 学生的身高和体重
![a26f8e1a5f990b898ddf0ada448b8b34.png](https://i-blog.csdnimg.cn/blog_migrate/78c6494dd3a48da68919a2aaee93027c.png)
![9c66fbb5162f6ce65f57b4100a7e0941.png](https://i-blog.csdnimg.cn/blog_migrate/8a69174e26b151ee1d7a874d9cbc69ab.png)
(i) 数据输入
数据输入通常有两种方法,一种是在交互环境中直接输入,如果在统计中数据量比较大,这样作不太方便;另一种办法是先把数据写入一个纯文本数据文件data.txt 中,格式如例 1 的表 1,有 20 行、10 列,数据列之间用空格键或 Tab 键分割,该数据文件 data.txt 存放在 matlab\work 子目录下,在 Matlab 中用 load 命令读入数据,具体作法是:
load data.txt
这样在内存中建立了一个变量 data,它是一个包含有20×10 个数据的矩阵。
为了得到我们需要的 100 个身高和体重各为一列的矩阵,应做如下的改变:
high=data(:,1:2:9);high=high(:) weight=data(:,2:2:10);weight=weight(:)
(ii)作频数表及直方图
求频数用hist 命令实现,其用法是:
[N,X] = hist(Y,M)
得到数组(行、列均可)Y 的频数表。它将区间[min(Y),max(Y)]等分为 M 份(缺省时M 设定为10),N 返回M 个小区间的频数,X 返回M 个小区间的中点。
命令
hist(Y,M)
画出数组Y 的直方图。
对于例1 的数据,编写程序如下:
向上滑动阅览
load data.txt;
high=data(:,1:2:9);high=high(:);
weight=data(:,2:2:10);weight=weight(:);
[n1,x1]=hist(high)
%下面语句与hist命令等价
%n1=[length(find(high<158.1)),...
% length(find(high>=158.1&high<161.2)),...
% length(find(high>=161.2&