数据分析软件
大 作 业
作业名称 MATLAB 数值分析应用
班 级
17 电信 A 班
任课教师
潘 新 建
学 号: 2017010301055
姓 名:
劳浩贤
作业正文
一、 作业内容
将日类型分为,工作日(编号为 1)、普通假日(即周六日,编号为 0)、春节假日(编
号为 2)和其它节日(如端午、中秋等公共假期,编号为 3)。按照以上编号,生成某年度
的日类型行向量。以 2018 年为例,前十天的编号是 3 1 1 1 1 0 0 1 1 1。
二、 建议步骤
1、输入一个年份,判断该年是否为闰年,以此决定某年日类型行向量长度;
2、输入该年度一月一日是星期几,即可据此将编出初始编号(只包含工作日和普通
假日);
3、输入该年的假日放假计划和调休安排,将初始编号刷新为最终编号。
三、程序代码(要求写程序注释)
function tianshu=qiuhe(year,yuefen,day)
yue=[31,28+(mod(year,400)==0 || mod(year,100)~=0 &&
mod(year,4)==0),31 30 31 30 31 31 30 31 30 31];
tianshu=sum(yue(1:yuefen-1))+day;
%该函数的作用是:输入年月日,从 1 月 1 号到所输入的月日,判断一共
多少天。
%如:2018 年 1 月 1 号到 10 月 1 号,一共 274 天。
function xingqi=week(year,month,day)
%以 2000 年为基准
yue=[31,28+mod(year,400)==0 || mod(year,100)~=0 &&
mod(year,4)==0,31 30 31 30 31 31 30 31 30 31];
%一月份的天数 %二月的天数(判断是否闰年,然后逻辑
+28)
%3-12 月的天数
nian=year-1;
%前一年
xingqi=mod(fix(nian/4)-fix(nian/100)+fix(nian/400)-484+(year-200
0)*365+sum(yue(1:month-1))+day-1+6,7);
%①期间多少个闰年,增加多少天...%②相差多少年,增加多少个 365
天...%③输入年份的月增加的天数 ... %④号增加的天数 ... %⑤从星期六
开始 % ⑥求星期的余数
xingqi=xingqi+(xingqi==0)*7;
%如果是 0,说明是周末,变成 7,其它不变
if mod(year,400)==0 || mod(year,100)~=0 && mod(year,4)==0
else
a=366;
a=365;
end
x=1;
i=xingqi;
A=[1:a];
%判断输入年份是否是闰年,并产生相应的 a
%定义一个变量后面利用采访元素下标用到
%把上面求到某年的 1 月 1 号是星期几赋值给 i
%定义一个输入年份的总天数的矩阵
%以下是对通过调用 qiuhe 函数判断节假日在第几天
yuandan=qiuhe(year,1,1);
chunjie=qiuhe(year,2,15);
qingming=qiuhe(year,4,5);
laodong=qiuhe(year,5,1);
duanwu=qiuhe(year,6,16);
zhongqiu=qiuhe(year,9,22);
guoqin=qiuhe(year,10,1);
for n=1:a
%把该年按 1-7 一组进行循环,并将周末赋值 1,工
作日赋值 0,春节赋值 2,公假日赋值 3
if mod(i,7)~=0&&i<6
y=1;
A(x)=y;%把符合条件的值放到矩阵里面去,下面原理一致
else
end
y=0;
A(x)=y;
if mod(i,7)==0
y=0;
A(x)=y;
i=0;
end
x=x+1;
i=i+1; %i 的累加
%变量 i 经过 1-7 后归零重新计算
%矩阵元素的累加
end
%上面通过求和函数的调用,知道节假日在第几天,然后通过元素下标采
访法对节假日进行调休
A([yuandan qingming qingming+1 qingming+2 laodong-1
laodong duanwu duanwu+1 duanwu+2 zhongqiu zhongqiu+1
zhongqiu+2 guoqin guoqin+1 guoqin+2])=3;
A(chunjie)=2
%最后输出的 ans 是该年的 1 号是星期几
四、程序执行结果
五、作业总结
通过这次实验,学会了很多 MATLAB 的知识。如掌握了如何使用 MATLAB
变量,如何创建 MATLAB 数 组 , MATLAB 数 组 和 矩 阵 的 运 算 以 及 熟 悉 了
MATLAB 的一些函数的调用以及定义方法。学会了运用了 MATLAB 这个强大
的工具进行矩阵的分析并且其中的一些技巧的运用。