1、中国地质大学(北京) 2008 年秋季学期第 1 页(共 6 页) 2008 年 12 月课程号: 1003025 Matlab 语言基础 期末考试试卷(A 卷)考试形式:闭卷考试 考试时间:120 分钟班号 学号 姓名 得分 题号 一 二 三 四 五 六 七 八 九 十 总分得分一、 (5 分)简答:分别说明 Matlab 命令 clc、clear、close 的作用及调用方式。二、 (5 分)简答:Matlab 与一般程序设计语言相比数据结构有何特殊性,为什么说 Matlab 有很强的扩充性?三、 (5 分)简答:简述 Matlab 的矩阵运算、矩阵的数组运算和符号运算的本质及不同之处。四
2、、 (10 分)简答:输入一个 3 行 2 列的数值矩阵、一个 2 行 3 列的字符串矩阵,最后生成一个 2 行 1 列的元胞矩阵,要求元胞矩阵的两个元素分别是刚输入的数值矩阵和字符串矩阵;比较这三类矩阵输入方式的异同。五、 (15 分)编程:公 历 闰 年 判 定 遵 循 的 规 律 为 : 四 年 一 闰 , 百 年 不 闰 , 四 百年 再 闰 ; 即 能 被 4 整 除 而 不 能 被 100 整 除 或 能 被 400 整 除 的 年 份 为 闰 年 。分 别 使 用 for 循 环 和 while 循 环 编 写 一 段 Matlab 程 序 , 判 断 并 输 出 公 元2000
3、 年 至 3000 年 间 ( 包 含 2000 年 和 3000 年 ) 闰 年 的 个 数 , 并 屏 幕 输 出 闰年 年 份 。求 余 函 数 的 Matlab 帮 助 :modModulus after divisionSyntaxM = mod(X,Y)Examplesmod(13,5)ans =3中国地质大学(北京) 2008 年秋季学期第 1 页(共 6 页) 2008 年 12 月六、 (20 分)编程:单窗口多曲线分幅绘图。要求如下:(2 分)新建一个绘图窗口,分两行一列进行绘图;(8 分)第一幅绘制 sin 曲线,要求 x 轴取对数,使用红色实线绘制,并对图形使用所有加注
4、(xlabel、ylabel 、title、text、legend、grid、gtext) ;(10 分)第二幅绘制 cos 曲线,要求使用直角坐标系,并使用句柄绘图功能改变窗口名称(name) ;窗口左下角坐标为0.1 0.1,右上角坐标为0.7 0.8(units ,position) ;把 y 轴设置为一个R G B的自定义色( ycolor) 、把 x 轴翻转(xdir) 、y 轴方向绘制网格线(ygrid) ;要求把点型改为圆形(linestyle) 、把点符号大小改为 12(markersize) 、把点符号边缘色改为红色(markeredgecolor) 、把点符号填充颜色改为灰
5、色(markerfacecolor ) 、把线对象的 y 值改为原先的1/2(ydata) 。七、 (10 分)编程:为上题中第一幅的 sin 曲线(假设其句柄为 hh)添加一个上下文菜单(uicontextmenu) ,要求:包含 red、green 和 blue 三个菜单项(uimenu 、label、callback) ;初始时 red 选项不可用(上题中线条初始颜色为红色) ,点击某一个颜色菜单项 sin 曲线显示为对应颜色,并使该点击完成的菜单项不可用,其他两个菜单项变为可用(使用 enable 属性字段,其取值为 on 或 off) 。八、 (10 分)编程:有一个后缀为 dat
6、的文件,文件名未知,文件内容如下:# this file is designed just for Matlab test1023.8 4.09 3.5212.98 551 7.16使用 uigetfile、fgetl、fscanf 等函数读取该文件,要求把第一行说明行赋给变量ctemp,把 10 赋给变量 a,把 2 行 3 列矩阵数据赋给变量 b;文件滤波器包含*.dat 和*.*。九、 (10 分)编程:建立一个界面,使用 Matlab 的 GUI 编程在界面上放置 2 个按钮,要求使用的属性名称有:style、units、position、string、callback,点击其中一个按
7、钮可以调用上题的文件读取程序,点击另一个按钮则清空工作空间。十、 (10 分)编程:简述函数 M 文件和脚本 M 文件的区别,并分别给出示例程中国地质大学(北京) 2008 年秋季学期第 1 页(共 6 页) 2008 年 12 月序。中国地质大学(北京) 2008 年秋季学期第 1 页(共 6 页) 2008 年 12 月课程号: 1003025 Matlab 语言基础期末考试试卷标准答案及评分标准(A 卷)考试形式:闭卷考试 考试时间:120 分钟一、 (5 分)答:clc 用来清空命令窗口的屏显,clear 命令用来清空工作空间变量与函数,close 用来关闭已打开的的 figure 窗
8、口。clear all 用来清空所有工作空间变量与函数,close all 用来关闭所有 figure 窗口。评分标准:clc、clear、close 各 1 分,共 3 分;close all、clear all 各 1 分,共 2 分。二、 (5 分)答:Matlab 的所有数据都是以双精度矩阵保存,没有其他数据类型;Matlab 提供了功能强大的函数库,通过 M 文件的方式实现各个功能,用户编写自己的 M 文件集就可以形成自己独特的函数库。评分标准:第 1 问 2 分,第 2 问 3 分。三、 (5 分)答: Matlab 的数据类型是双精度的矩阵,故 Matlab 的运算是矩阵运算,符
9、合线性代数中矩阵运算的规则;矩阵的数组运算是指矩阵间按元素进行的元素之间的运算;一般算术运算要求先对变量赋值,为了解决符号参与的运算问题,Matlab 中可以先定义符号变量,然后输入符号表达式进行符号运算。评分标准:矩阵运算 1.5 分,数组运算 1.5 分,符号运算 2 分。四、 (10 分)答: a=1 2; 3 4; 5 6;b=wer;3th;c=a;b;矩阵输入时用分号分隔行,用逗号或空格分隔列,数值矩阵和符号矩阵都用中括号,但符号矩阵的元素要用单引号,元胞矩阵用大括号。评分标准:输入矩阵代码每行 2 分,共 6 分;输入时的共同点 2 分,不同之处 2 分。五、 (15 分)答:
10、for循环代码:中国地质大学(北京) 2008 年秋季学期第 1 页(共 6 页) 2008 年 12 月for i=2000:3000if mod(i,4)=0 disp(num2str(i), is a leap year!);elseif mod(i,400)=0n=n+1;disp(num2str(i), is a leap year!);elsedisp(num2str(i), is NOT a leap year!);endenddisp(There are ,num2str(n), leap years from 2000 to 3000);while 循环代码:n=0;year
11、=2000;while year=3000if mod(year,4)=0 disp(num2str(year), is a leap year!);elseif mod(year,400)=0n=n+1;disp(num2str(year), is a leap year!);elsedisp(num2str(year), is NOT a leap year!);endyear=year+1;enddisp(There are ,num2str(n), leap years from 2000 to 3000);评分标准:for 循环 8 分,while 循环 7 分。六、 (20 分)答
12、: t=0:0.1:2*pi;y1=sin(t);y2=cos(t);figure;subplot(2,1,1);semilogx(t,y1,r-);title(semilogx test);xlabel(logt);ylabel(sin(t);text(1,0.7,sin(t);grid on;legend(sin(t);gtext(sin(t);中国地质大学(北京) 2008 年秋季学期第 1 页(共 6 页) 2008 年 12 月subplot(2,1,2);hl=plot(t,y2);ha=gca;hf=gcf;set(hf,name,handle test,units,normal
13、ized,.position,0.1 0.1 0.6 0.7);set(ha,ycolor,0.2 0.1 0.9,xdir,rev,ygrid,on);set(hl,linestyle,o,markersize,12,markeredgecolor,.r,markerfacecolor,0.2 0.2 0.2);a1=get(hl,ydata);set(hl,ydata,a1/2);评分标准:生成数据与开窗口 3 分;sin 曲线图绘制 2 分;图形加注功能每一个 1 分,共7 分;绘制 cos 曲线 1 分;设置窗口属性 2 分;设置轴属性 2 分;设置线属性 2 分;设置y 知减半 1
14、分;共 20 分。七、 (10 分)答: m=uicontextmenu;m1=uimenu(m,label,red,enable,off,callback,.set(hh,color,r),set(m2,enable,on);set(m3,enable,on);set(m1,enable,off););m2=uimenu(m,label,green,enable,on,callback,.set(hh,color,g),set(m1,enable,on);set(m3,enable,on);set(m2,enable,off););m3=uimenu(m,label,blue,enable,
15、on,callback,.set(hh,color,b),set(m2,enable,on);set(m1,enable,on);set(m3,enable,off););set(hh,uicontextmenu,m);评分标准:建立正确的菜单项,并会使用 callback5 分;建立上下文菜单并赋给 sin 曲线2 分;会控制菜单项的可用性 3 分。八、 (10 分)答:cfile=uigetfile(*.dat,dat file(*.dat);*.*,All files(*.*),.choose file);fid=fopen(cfile,r);ctemp=fgetl(fid);a=fsc
16、anf(fid,%f,1);b=fscanf(fid,%f,2,3);fclose(fid);中国地质大学(北京) 2008 年秋季学期第 1 页(共 6 页) 2008 年 12 月评分标准:会打开、关闭文件 3 分;会用 uigetfile 建立文件滤波器 4 分;正确读入 3 个变量每个 1 分,共 3 分。九、 (10 分)答:h=figure;bt1=uicontrol(h,style,pushbutton,string,.open,units,normalized,position,0.05 0.05 0.15 0.1,.callback,aa);bt2=uicontrol(h,style,pushbutton,string,.close,units,normalized,position,0.25 0.05 0.15 0.1,.callback,clear all,return);评分标准:建立窗口获取句柄 2 分;按钮每个 4 分,共 8 分。十、 (10 分)答:脚本 M 文件:t=0:0.1:2*pi;y=sin(t);plot(t,y);函数 M 文件:function result=ABC(a)if a0result=-a;else result=a;end评分标准:脚本 M 文件 4 分;函数 M 文件 6 分。