一、孕妇建档月份频次统计

源数据样本,为某医院一段时间内的孕妇建档时间

2015-04-22 10:12:52

2014-11-2117:16:47

2013-12-1617:35:44

2013-12-2616:58:46

2013-12-2716:44:33

2013-12-2716:45:32

2013-12-308:26:20

2013-12-309:47:27

2013-12-308:46:42

2013-12-3011:00:06

2013-12-3011:08:42

分析目的:统计每个月的孕妇建档频次,这就要提取源数据的第一列,同截取年月数据,然后做频次直方图,看孕妇建档频次有没有随月份变化的规律。

Matlab 代码:

%孕妇建档日期统计

[datestr,timestr]=textread(‘PregnantWomanFileTime.txt‘,‘%s%s‘);

f=cell2mat(datestr);

f=f(:,1:7);

f=tabulate(f);

f=sortrows(f,1);

bar(cell2mat(f(:,2)),1);

set(gca,‘XTickLabel‘,f(:,1),‘XTick‘,[1:length(f(:,1))]);

title( ‘孕妇建档时间统计‘ );%下面的代码是为了旋转横坐标轴标签

xtb= get(gca,‘XTickLabel‘);%获取横坐标轴标签句柄

xt= get(gca,‘XTick‘);%获取横坐标轴刻度句柄

yt= get(gca,‘YTick‘); %获取纵坐标轴刻度句柄

xtextp=xt;%每个标签放置位置的横坐标

ytextp=yt(1)*ones(1,length(xt));

text(xtextp,ytextp,xtb,‘HorizontalAlignment‘,‘right‘,‘VerticalAlignment‘,‘top‘,‘rotation‘,45,‘fontsize‘,10);set(gca,‘xticklabel‘,‘‘);% 将原有的标签隐去

最终生成效果图:

下面将对上面的 Matlab 代码进行分析。

1、读取 txt 中的日期时间数据

如果 txt 中是两列数值,譬如「19811986」,那只需要用 M = load(‘shuzhi.txt‘) 就可读取进 M 矩阵中,如下图所示。

>> M = load(‘CoupleBirth.txt‘);>> M(1:4,:)

ans=

1981 1986

1988 1993

1985 1989

1984 1984

然后就可以用M(:,1) 和M(:,2) 访问这两列数据。

但本例中我们要读取的不是数值数据,而是包含日期的字符串,我们就不能再用 load 函数读取了,要用 textread 函数。因为是两列数据,就不能用 M=textread(‘PregnantWomanFileTime.txt‘,‘%s‘); 来读取了,如果硬要这样读,那日期和时间就会在返回的元胞数组 M 中混到一块,如下所示:

>> M=textread(‘PregnantWomanFileTime.txt‘,‘%s‘);>> M(1:4)

ans=

‘2015-04-22‘

‘10:12:52‘

‘2014-11-21‘

‘17:16:47‘

为了把两列数据分别读进两个元胞数组,要使用:

>> [datestr,timestr]=textread(‘PregnantWomanFileTime.txt‘,‘%s%s‘);>> datestr(1:4)

ans=

‘2015-04-22‘

‘2014-11-21‘

‘2013-12-16‘

‘2013-12-26‘

textread 函数返回的是装满数据的元胞数组,datestr 和 timestr 都是元胞数组。

元胞数组是MATLAB的一种特殊数据类型,可以将元胞数组看做一种无所不包的通用矩阵。通过小括号()里面加下标,访问cell数组中的数据,返回的是对应的cell。通过大括号{}里面加下标,访问cell数组中的数据,返回的是对应cell的内容。

>> [datestr,timestr]=textread(‘PregnantWomanFileTime.txt‘,‘%s%s‘);>> datestr(1)

ans=

‘2015-04-22‘

>> class(datestr(1))

ans=cell>> datestr{1}

ans=

2015-04-22

>> class(datestr{1})

ans=

char

2、从 2015-04-22 中提取出 2015-04 来

可以用正则表达式,但我们这里使用矩阵的方法,正则表达式的方法我们后面介绍。目前 datestr 还是 cell 元胞数组,我们先把元胞数组转成 char 矩阵,使用 cell2mat 函数。

>> [datestr,timestr]=textread(‘PregnantWomanFileTime.txt‘,‘%s%s‘);>> class(datestr)

ans=cell>> f=cell2mat(datestr);>> class(f)

ans=

char

>> f(1:4,:)

ans=

2015-04-22

2014-11-21

2013-12-16

2013-12-26

然后对 char 矩阵提取所需字符即可。

>> f=f(:,1:7);>> f(1:4,:)

ans=

2015-04

2014-11

2013-12

2013-12

3、统计月份的频次

如果 f 是一维数值矩阵,那只需要使用 hist 函数就可以了,但因为这里要统计的是日期字符的频次,hist 就不能用了。

>>hist(f)??? Error using ==>hist

Input arguments must be numeric.

还好 Matlab 提供了另一个类似的频数统计函数 tabulate。

>> f=tabulate(f);>>f

f=

‘2015-04‘ [1386] [6.4706]‘2014-11‘ [ 582] [2.7171]‘2013-12‘ [ 84] [0.3922]‘2014-01‘ [ 766] [3.5761]‘2014-09‘ [ 587] [2.7404]‘2014-02‘ [ 616] [2.8758]

……

使用 sortrows 函数对根据第一列元素对 f 排序。

>> f=sortrows(f,1);>>f

f=

‘2013-12‘ [ 84] [0.3922]‘2014-01‘ [ 766] [3.5761]‘2014-02‘ [ 616] [2.8758]‘2014-03‘ [1000] [4.6685]‘2014-04‘ [ 977] [4.5612]‘2014-05‘ [ 948] [4.4258]‘2014-06‘ [ 961] [4.4865]

4、绘直方图

绘图就很简单了,bar 函数就可以。首先我们要 f 转成一维矩阵,因为上面 tabulate 返回的是元胞数组。转成行矩阵、列矩阵均可。然后再调用 bar 绘制 f 第二列的数据图,并使用 f 的第一列设置 x 轴标签,再加上 Title。

>> bar(cell2mat(f(:,2)),1);>> set(gca,‘XTickLabel‘,f(:,1),‘XTick‘,[1:length(f(:,1))]);>> title( ‘孕妇建档时间统计‘ );%下面的代码是为了旋转横坐标轴标签

本来到这里绘图可以算完成了,但是,看看 x 轴标签拥挤得,完全没法看,所以需要对 x 轴标签的显示进行下调整。

5、旋转 x 轴标签

原文:http://www.cnblogs.com/NaughtyBaby/p/4859511.html

matlab日期统计,Matlab 日期频次统计相关推荐

  1. python基础——3、python应用(日期、文件、词云统计)——(YZ)

    本次的内容为python的应用,关于日期.文件.词云统计应用,均多应用对象思想,及字典. 习题一 要求:1.初始化start_day,end_day两个日期 from datetime import ...

  2. 雅客EXCEL(1)--快速录入、统计、日期

    文章目录 0. 开篇引言 1.导入数据的方法 2.统计函数---countif 3.时间和日期的格式 4.EXCEL的帮助文档 0. 开篇引言 本目录是高价购买EXCEL课程的听课笔记,EXCEL很影 ...

  3. sql server计算日期到当前日期天数_Excel如何统计连续停机天数问题

    前几天有个朋友问了一个关于连续时间统计的问题,使用Power Query for Excel来解决的.今天在张俊红老师的公众号上看到了使用使用SQL来解决连续时间的统计问题.这个问题是一个非常经典的例 ...

  4. Matlab:表示 MATLAB 中的日期和时间

    Matlab:表示 MATLAB 中的日期和时间 储日期和时间信息的主要方法是使用 datetime 数组,该数组支持算术运算.排序.比较.绘图和格式化显示方式.算术差异的结果在 duration 数 ...

  5. 【Matlab人脸识别】形态学教室人数统计(带面板)【含GUI源码 1703期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]形态学教室人数统计(带面板)[含GUI源码 1703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟 ...

  6. 统计两日期之间星期一至星期日个数

    最近在做一个统计的相关功能,由于数据库表的设计比较特殊,其中有一个字段表示星期几.于是写了一个统计两日期之间星期一至星期日个数的功能. 入参形式为开始与结束对应时间的时间戳. 有不足之处,希望大佬指正 ...

  7. MATLAB 快速标注序列日期

    任务描述:获取1900年1月1日至2039年12月31日的日期排列(年-月-日) 需要用到datenum函数,将日期转化为日期序数(从公元0年1月1日起的天数) a = datenum(0,1,1) ...

  8. python频次统计图_数据分析师如何自力更生统计用户行为频次?

    不懂数据分析的 growth hacker 不是好运营.近日我想要统计我家产品 xue.cn 用户的编程自学行为的频次,且在不给技术开发部门带来任何新需求的情况下自力更生.那么,我该如何定义并统计这个 ...

  9. 【数字信号】基于matlab GUI多音双频(DTMF)拨号音频解码仿真系统【含Matlab源码 1084期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[数字信号]基于matlab GUI多音双频(DTMF)拨号音频解码仿真系统[含Matlab源码 1084期] 点击上面蓝色字体,直接付费 ...

最新文章

  1. 业界丨2018,人工智能革命走向风口浪尖
  2. 【知识图谱系列】人工智能经典图谱有哪些?
  3. 有关uploadifive的使用经验(转:http://www.cnblogs.com/itBscs/p/4781786.html )
  4. windows文件保护_文件通通用它加密,安全等级提高一个档次
  5. 297. Serialize and Deserialize Binary Tree
  6. kylin: build cube Hbase: Region Server 意外退出
  7. ECS启动新“模”法
  8. Alyona and copybooks
  9. 计算机网络使用双绞线连接时,计算机网络技术期末试卷A
  10. 苹果激活锁怎么解除?手把手教你关闭激活锁
  11. 《谭浩强C语言程序设计》 · 素数 7-3
  12. CreateThread()与_beginthread()的区别详细解析
  13. ZT 80-90年代港台300部电视剧 你看过多少?
  14. Unity插件 - MeshEditor(一) 3D线段作画 模型网格编辑器
  15. GitHub 下载单个文件/文件夹
  16. colorbox ajax,Colorbox弹出层插件
  17. 终于搞定Paypal了
  18. python 如何绘制分叉图
  19. 双系统启动项设置为上次所选系统
  20. EZ-USB FX2 LP CY7C68013A 开发指南(1)--基本概念

热门文章

  1. Lawliet|C++学习笔记1——输入输出
  2. 【实验1 顺序结构】7-3 sdut-C语言实验-虎子分糖果
  3. 紫光集团就“华亚科工程师被紫光集团挖角”事件发表声明
  4. 使用 JPQL 和原生 SQL 查询 JPA 实体(转)
  5. 便利蜂 java后端开发 面经
  6. 华为、腾讯、淘宝面试流程+面试技术题分析,速看
  7. C语言错误:expected declaration or statement at end of input、编写函数求100万以内的素数
  8. 漩涡中的中国首富李彦宏
  9. RPG游戏制作-07-特效层的创建
  10. 解决ESP32 驱动 28BYJ-48 步进电机反向不转之震动的问题