利用MATLAB函数产生多维阵列
TS3={'英语(1)',[2991 2992 2993 2994],[5 4 5 4],[60.2 65.4 58.1 59.2]}; TS4={'英语(2)',[2981 2982 2983 2984],[4 5 4 5],[62.3 68.3 71.2 63.9]}; TS5={'计算机应用基础',[2991 2992 2993 2994],[1 2 3 4],[75.4 80.1 73.2 74.2]}; TS6={'电路分析基础',[2981 2982 2983 2984],[3 2 1 5],[66.1 65.4 68.2 70.0]}; TS7={'低频电子线路',[2991 2992 2993 2994],[1 1 4 3],[56.9 59.1 52.3 57.2]}; TS8={'高频电子线路',[2981 2982 2983 2984],[5 1 3 4],[66.1 60.9 61.2 64.9]}; TS9={'数字信号处理',[2981 2982 2983 2984],[2 2 4 3],[77.1 78.9 69.9 72.1]}; TS=cat(3,TS1,TS2,TS3,TS4,TS5,TS6,TS7,TS8,TS9); ? %计算8个班的学分加权平均 disp1='班的学分加权平均为'; for i=1:8 c=Student(i).class; s=0;v=0; for j=1:9 k=find(TS{1,2,j}==c); if ~(isempty(k)) v1=TS{1,4,j}(k); s1=Course(j).score; s=s+s1; v=v+v1*s1; end end av=v/s; disp([num2str(c) disp1 num2str(av)]) end ? %计算教师工作量 disp2='的教学工作量为';disp3='小时'; for i=1:5 c=Teacher(i).name; c1=Teacher(i).posit; g=0; for j=1:9 k=find(TS{1,3,j}==i); if ~(isempty(k)) for l=1:length(k) cn=TS{1,2,j}(l) -2990; if cn<0,cn=cn+14;end x=Student(cn).tol-40; f=1+(1-exp(-2*x))/(1+exp(-2*x)); t=Course(j).time; g=g+f*t; end end end disp([c c1 disp2 num2str(g) disp3]) end 执行结果为 2991班的学分加权平均为66.2211 2992班的学分加权平均为66.0105 2993班的学分加权平均为61.8526 2994班的学分加权平均为64.7526 2981班的学分加权平均为67.9 2982班的学分加权平均为68.75 2983班的学分加权平均为68.2083 2984班的学分加权平均为68.15 王立伟讲师的教学工作量为1060小时 赵杰副教授的教学工作量为1044小时 李志范教授的教学工作量为1168小时 陈根生教授的教学工作量为1020小时 孙兴国讲师的教学工作量为764小时 6.5 多维阵列、结构阵列和单元阵列函数 MATLAB的基本系统提供了建立和使用多维阵列、结构阵列和单元阵列的函数,表6.5列出了这些函数,其后将详细介绍这些函数的用法。 表6.5 多维阵列、结构阵列和单元阵列函数 6.5.1 多维阵列函数 1.cat 功能:连接阵列。 (参见第二章。) 2.ndims 功能:求阵列维数。 格式: n=ndims(A) 说明: n=ndims(A)可求出阵列A的维数,它等同于n=length(size(A))。例如: >> A=magic(3); B=pascal(3); >> C=cat(4,A,B); >> n1=ndims(A) n1 = 2 >> n2=ndims(C) n2 = 4 3.ndgrid 功能:为多维函数和内插产生阵列。 格式: [X1, X2, X3, …]=ndgrid(x1, x2, x3, …) [