基于MATLAB的学生成绩分析系统设计
m1=a(i); d1=i; end end
(3)求成绩的平均值
程序如下:
function average=avsize(a) s=0;
n=length(a); for i=1:n s=s+a(i); end
average=s/n; (4)求成绩的方差
程序如下:
function s1=sdsize(a) s=0; s3=0; n=length(a); for i=1:n s3=s3+a(i); end
average=s3/n; for i=1:n
s4=(a(i)-average).^2; s=s+s4; end
s1=sqrt(s/(n-1));
通过此模块对学生成绩的统计分析,不仅给出了学生成绩的最大值和最小值,还完成了对学生成绩的平均差,标准差等经验数据的分析,为后面做直方图奠定了数据基础。
10
巢湖学院2012届本科毕业论文(设计)
4. 系统应用示例分析
4.1 系统的应用
1、下面对系统功能进行测试,以巢湖学院08级自动化班matlab考试的成绩为例,将成绩制成excel电子表格,通过matlab的导入函数,在matlab的环境中,生扩展名为.xls的文件,就完成成绩的录入。制作的班级成绩的excel表格如下图4-1所示:
图4-1 班级成绩excel表格
2、平均值图。根据成绩导入的数据,点击“统计得”后点击“均分为”可得成绩平均值。平均值图如图4-2所示:
图4-2 平均值图
11
基于MATLAB的学生成绩分析系统设计
3、绘制直方图。通过学生成绩的录入和分析,将横轴设置为分数段,纵轴为累计频数,即在某分数段人员的分布情况,运行系统结束后系统自动生成直方图,从而绘制统计系统直方图并为分析成绩分布及正态分布规律创造条件。下图4-3为成绩分布直方图:
图4-3 成绩分布直方图
图形分布大致呈“钟形”,可以基本认定数据服从正态分布,符合之前对成绩评价的预估。
4、频数统计
对成绩的整体情况做了统计后,下一步我们要做的就是更进一步的分析。 系统要能完成各种横向的统计,实际参加考试的人数、缺考人数以及各个分数段之间的人数;还要统计出标准差、峰度等。频数统计程序如下:
function fenbu_tj(hObject, eventdata) handles=guidata(gcf); data=getappdata(gcf,'data'); k=get(handles.edit6,'string'); k=str2num(k);
list_value=get(handles.fxjg,'value'); if ~isempty(data); n=length(data);
mean1=num2str(mean(data)); fail_num=sum(data<60);
fail_rat=num2str(100*(fail_num/n));
12
巢湖学院2012届本科毕业论文(设计)
fail_num=num2str(fail_num); pass_num=sum(data>=60);
pass_rat=num2str(100*(pass_num/n)); pass_num=num2str(pass_num); N90_100=sum(data<=100 & data>=90); P90_100=num2str(100*N90_100/n); N90_100=num2str(N90_100); N80_89=sum(data<90 & data>=80); ???.. ???..
P60_69=num2str(100*N60_69/n); N60_69=num2str(N60_69); switch list_value;
case 1;
set(handles.edit5,'string',mean1); case 2;
set(handles.edit5,'string',['',pass_rat,' %']); case 3;
set(handles.edit5,'string',['',fail_rat,' %']); case 4;
set(handles.edit5,'string',['60---69',P60_69,' %']); ?????.. case 7;
set(handles.edit5,'string',['90',P90_100,' %']); case 8;
set(handles.edit5,'string',['实际参加考试共 ',num2str(n),' 人']); ????.
将各分数段所占人数作统计是本系统所给出的另一个有效而实用的统计分析结
13
及格',pass_num,'人占
不及格',fail_num,' 人占
分',N60_69,'人占
分以上',N90_100,'人占
基于MATLAB的学生成绩分析系统设计
果,根据直方图给出的粗略信息外,成绩的具体分布对分析教学质量好坏,教学经验的累积有着重要作用,其频数值也为后面分析系统是否符合正态分布做好铺垫。
5、 正态分布规律分析
根据以上统计分析,能得到学生的成绩平均分、最高分、最低分、各个分数段的人数等,通过对经验分布、正态分布的分析以及直方图的试图等大量有效信息。我们能清楚的了解学生的学习,对知识的掌握情况,老师的教学质量。我们科根据以往的教学经验,提出建议,以供做有效的决策参考,这样需要建立分析模板程序。分析模板程序的建立,要根据考试的情况,建立不同的模板。
(1) 判定正态分布规律
程序中分析系统是否符合正太分布并给出评价: mean1=num2str(mean(data)); fail_num=sum(data<60);
pass_rat=[num2str(100*(1-fail_num/n)) '%']; fail_num=num2str(fail_num); N90_100=sum(data<=100 & data>=90); P90_100=num2str(100*N90_100/n); N90_100=num2str(N90_100); N80_89=sum(data<90 & data>=80); ?
if norm_h==0
norm_str='服从正态分布'; else
norm_str='不服从正态分布'; ? case 4
moban_str=[‘试卷覆盖率高,对知识的考察程度较全面???体现教学大纲上对知识点掌握情况的不同要求,??从阅卷的情况来看,总体题量适中,难度适中。大部分的学生对于基础题都能够掌握的很好,这说明这些学生在平时能够认真学习??概念的理解上没有真正掌握,还需要再强调并加强练习???这班的学生学风一般,个体差距较大,??.’] (2)绘制正态分布图
得到系统分析后的正态分布图如下图4-4所示:
14