1、装 订 线2009-2010学年第 二 学期 物电 学院期末考试卷 MATLAB实用教程 (课程论文等试卷样式)成绩:评语:(考试题目及要求) 本考试要求学生灵活运用Matlab程序设计语言课程中的学习到的相关知识,自拟题目,编制应用程序,实现具有一定难度的应用程序。在程序设计过程中,要注重知识的综合应用,尽量涵盖Matlab程序设计语言课程中较多的知识点;也可以自行学习课本上未涉及的Matlab程序设计语言高级内容,完成相关程序设计。 本考试每人需要提交以下内容:1. 课程论文(包括简介,主要内容,结论,参考文献等),打印稿,电子版; 2. 源程序;3实验报告合订本。简易Matlab界面设计
2、报告一、 设计简介通过熟悉Matlab图形界面的相关控件和属性,设计了一个简易的界面在设计中用M文件编写了部分界面设计,对Matlab程序流程有了大概的了解和掌握,与此同时对用句柄创建图形对象并设计相关属性也有了相应的熟悉。界面设计的主要功能是通过对图形和命令按钮进行简单的编辑,实现界面的一些图形操控操作。二、 设计内容设计一个显示图形曲线的GUI界面,要求通过单选按钮及菜单显示相关图形和动画的界面。1、设计界面 控件设计:在命令窗口输入“Guide”命令,出现可视化的界面开发环境,将界面窗口右边的图形对象面板中的控件拖放到空白窗口中,放置的空间有:1个坐标轴、2个静态文本框、1个面板、6个按
3、钮,设置控件属性。 菜单设计: 在可视化界面环境选择菜单“Tools”“Menu Editor”就会出现菜单编辑器窗口,建立三个主菜单,如下图所示:“Label”栏用来编辑菜单项的名称,“Tag”是标记,“Separator above the item”是分隔符,“Item is checked”是处置是否已选,“Callback”栏用以输入回调函数。 日历和时钟界面设计:使用figure句柄创建图形界面,应用unicontrol句柄创建控件,创建日历及时钟界面,显示当前的日期、时间,程序如下:日历:function Untitled_14_Callback(hObject, eventda
4、ta, handles)%function CalendarTable;% calendar % Example:% CalendarTable;S=datestr(now);y,m,d=datevec(S);% d is day% m is month% y is yearDD=Sun,Mon,Tue,Wed,Thu,Fri,Sat;close allfigure;for k=1:7;uicontrol(gcf,style,text,.unit,normalized,position,0.02+k*0.1,0.55,0.08,0.06,.BackgroundColor,0.6 0.8 0.2
5、,ForegroundColor,0.9 0.5 0.1,.String,DD(k),fontsize,18,fontname,times new roman);endh=1;ss=b;qq=eomday(y,m);for k=1:qq;n=datenum(y,m,k);da,w = weekday(n);if k=d;ss=r;enduicontrol(gcf,style,push,.unit,normalized,position,0.02+da*0.1,0.55-h*0.08,0.08,0.06,.BackgroundColor,0.7 0.2 0.2,ForegroundColor,r
6、,.String,num2str(k);ss=b;if da=7;h=h+1;endenduicontrol(gcf,style,push,.unit,normalized,position,0.6,0.66,0.12,0.08,.BackgroundColor,0 1 0.8,ForegroundColor,0.1 0.9 0.5,.String,Time:,fontsize,18,fontname,times new roman);Tq=uicontrol(gcf,style,push,.unit,normalized,position,0.74,0.66,0.17,0.08,.Backg
7、roundColor,0.8 0.5 0.2,ForegroundColor,0.1,0.9,0.9,.fontsize,18,fontname,times new roman);sq=The Calendar Of 2010/6 ;uicontrol(gcf,style,push,.unit,normalized,position,0.14,0.86,0.37,0.08,.BackgroundColor,0 1 1,ForegroundColor,1 0 0,.fontsize,14,fontname,times new roman,string,sq);trywhile 1setq,Str
8、ing,datestr(now,13);pause(1);endend 时钟:function Untitled_17_Callback(hObject, eventdata, handles)h=figure(menubar,none,.color,white,.position,200 200 320 360,.name,CLOCK);e1=uicontrol(parent,h,.style,edit,.fontsize,12,.position,110 20 120 30);b1=uicontrol(parent,h,.style,text,.string,12,.fontsize,12
9、,.position,156 275 20 20);b2=uicontrol(parent,h,.style,text,.string,9,.fontsize,12,.position,60 175 20 20);b3=uicontrol(parent,h,.style,text,.string,6,.fontsize,12,.position,156 75 20 20);b4=uicontrol(parent,h,.style,text,.string,3,.fontsize,12,.position,260 175 20 20);s1=0:pi/1000:2*pi;hl=plot(cos(
10、s1),sin(s1),b-);time=datestr(now);set(e1,string,time(1:11);sita1=pi/2-str2num(time(19:20)*pi/30;sita2=pi/2-str2num(time(16:17)*pi/30+sita1/60;sita3=pi/2-str2num(time(13:14)*pi/6+sita2/12;w1=-pi/30;w2=-pi/1800;w3=-pi/108000;pausetime=1;axis off;axis equalhold onplot(0,0,or);%设置刻度for n=pi*2:-pi/30:pi/
11、30a1=0.95*cos(n):0.05*cos(n)/2:cos(n);b1=0.95*sin(n):0.05*sin(n)/2:sin(n);plot(a1,b1,r-);endfor n=pi*2:-pi/6:pi/30a1=0.9*cos(n):0.1*cos(n)/2:cos(n);b1=0.9*sin(n):0.1*sin(n)/2:sin(n);plot(a1,b1,r-);end%设置指针while 1x1=0:0.75*cos(sita1)/2:0.75*cos(sita1);y1=0:0.75*sin(sita1)/2:0.75*sin(sita1);x2=0:0.6*c
12、os(sita2)/2:0.6*cos(sita2);y2=0:0.6*sin(sita2)/2:0.6*sin(sita2);x3=0:0.45*cos(sita3)/2:0.45*cos(sita3);y3=0:0.45*sin(sita3)/2:0.45*sin(sita3);hp1=plot(x1,y1,r-);hp2=plot(x2,y2,r-,linewidth,2);hp3=plot(x3,y3,r-,linewidth,2);sita1=sita1+w1*pausetime;sita2=sita2+w2*pausetime;sita3=sita3+w3*pausetime;pa
13、use(pausetime);delete(hp1);delete(hp2);delete(hp3);endhold off2、回调函数:回调函数需要完成的任务是:单击按钮或菜单显示相应的图形曲线。利用标准回调函数callback来编写触发按钮的事件。 按钮回调函数的编写:在界面中选中单选按钮“视图”,然后选择菜单“View” “Componment Callbacks”“Callback”,则出现相应的各空白Function文件,添加按钮代码如下: 视图:x=0:0.1:5*pi;y1=sin(x);y2=sin(x)+cos(x);plot(x,y1,x,2*y2,*)xlabel(X轴)
14、;ylabel(Y轴);title(函数图形)grid on当单击“视图”按钮时,绘制函数y1=sin(x)与y2=sin(x)+cos(x)的图形。其他按钮与此相同,不在赘述,相关代码见“程序源”。 菜单回调函数的编写:打开菜单编辑器,选中菜单“百变球体”单击“View”,添加代码如下: 百变球体:x,y,z=sphere(45);m=moviein(100);for i=1:100 surf(10*i*x,10*i*y,10*i*z); m(:,i)=getframe; endmovie(m,1);title(百变球体)axis off;3、调试运行:M文件编完以后调试运行,如果发现不正确
15、,则可根据提示进行修改,直到正确为止。运行后的结果为:单击“视图”按钮绘制函数曲线矩阵曲线 百变球体 透明球体 螺旋曲面 布朗运动 饼状球类统计 罗盘图 时钟 日历 三、 设计体会Matlab是一个高级的距阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。它由一系列工具组成。这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运
16、行。通过本次课程设计,使我对GUI的设计和M文件的编写有了进一步的了解,尤其是对可视化图形界面的设计以及使用figure、unicontrol句柄创建图形界面有了更深层次的理解。对课程设计的一般步骤更加明晰。在试验时,虽说过程比较曲折,遇到了很多问题、出现了很对错误、走了许多弯路,但我认为这更是一个学习的好机会,带着问题去看书查资料,极大地提高了学习效率,这是我们在书本上学不到的,只有自己亲身做过才会有的。经过我们的努力做出结果后的那份喜悦别人是无法体会到的,我认为这就是收获,结果不是最重要的,过程才是最美的。在此过程中不仅锻炼了我们独立思考和学习的能力,而且对我们互相学习弥补自己的不足提供了
17、平台,加强了我们的合作精神。在本次实验中,学到了许多的东西,因为之前的课程学得实在是不怎么好,特别是实际的Matlab上机操作,所以在实验进行过程中实在是走了不少的弯路。到现在为止,有些东西还是掌握的不太好,但还好最终将界面设计出来了,并且也能很棒的运行!总体来说我们还是掌握了Matlab许多的知识,这点让我们感到很是欣慰!因为我们自己的学习能力有限,所以在实践时花费了我们许多的时间,效率实在是有点低!这在今后得特别的注意,毕竟学校的要求和社会的是不一样的。还好心血没有白费,最后在完成实验的同时还让我们锻炼了自身实践能力,也学习到了许多的新知识,尤其是在课堂上不可能学到的实战技术。纵观全局,我
18、们可能犯了一个很普遍的错误,那就是将原本并不怎么复杂的东西都整复杂化了,这会很容易让我们在其中迷失方向而不知所措的,所以这点还是最重要的。四、 相关源程序% 单位:物理与电子信息工程学院% 作者:程进功 赵金龙% 学号:200872020106 200872020158% 日期:2010-06-01% 版本:V1.0function varargout = zuoye(varargin)gui_Singleton = 1;gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFc
19、n, zuoye_OpeningFcn, . gui_OutputFcn, zuoye_OutputFcn, . gui_LayoutFcn, , . gui_Callback, );if nargin & ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);endfunction zuoye_Opening
20、Fcn(hObject, eventdata, handles, varargin)handles.output = hObject;guidata(hObject, handles);function varargout = zuoye_OutputFcn(hObject, eventdata, handles)varargout1 = handles.output;function Untitled_4_Callback(hObject, eventdata, handles)h0=figure(toolbar,none,. position,200 150 450 400,. name,
21、实例06);t=0:pi/10:2*pi;h=plot(t,sin(t);xlabel(t=0到2pi,fontsize,16);ylabel(sin(t),fontsize,16);title(it从 0to2pi 的正弦曲线,fontsize,16)x=get(h,xdata);y=get(h,ydata);imin=find(min(y)=y);imax=find(max(y)=y);text(x(imin),y(imin),. leftarrow最小值=,num2str(y(imin),. fontsize,16)text(x(imax),y(imax),. leftarrow最大值=
22、,num2str(y(imax),. fontsize,16)function Untitled_5_Callback(hObject, eventdata, handles)%h0=figure(toolbar,none,position,200 150 450 350,name,条形图形);m=652 521 224 445 41 445 745 426;t=1:8;drawnow;bar(t,m);xlabel(X轴);ylabel(Y轴);title(条形图形);grid on;function Untitled_6_Callback(hObject, eventdata, handl
23、es)t=54 21 35; 68 54 35; 45 25 12; 48 68 45; 68 54 69;x=sum(t);h=pie(x);drawnow;textobjs=findobj(h,type,text);str1=get(textobjs,string);val1=get(textobjs,extent);oldext=cat(1,val1:);names=足球:;篮球:;排球:;title(球类统计图)str2=strcat(names,str1);set(textobjs,string,str2)val2=get(textobjs,extent);newext=cat(1,
24、val2:);offset=sign(oldext(:,1).*(newext(:,3)-oldext(:,3)/2;pos=get(textobjs,position);textpos=cat(1,pos:);textpos(:,1)=textpos(:,1)+offset;set(textobjs,position,num2cell(textpos,3,2)function Untitled_7_Callback(hObject, eventdata, handles)%h0=figure(toolbar,none,position,200 50 450 450, name,柱状图);dr
25、awnowx= 5.4 3 4 1 3.5 5 6 2.5 4 2 3 5;barh(x)xlabel(X轴);ylabel(Y轴);title(柱形图)function Untitled_8_Callback(hObject, eventdata, handles)%h0=figure(toolbar,none,position,200 150 450 400, name,);%subplot(2,1,1)x=linspace(0,2.5*pi);y1=2*sin(x);y2=2*cos(x);y3=sin(x)+cos(x);z1=zeros(size(x);z2=0.5*z1;z3=z1
26、;plot3(x,y1,z1,x,y2,z2,x,y3,z3)grid onxlabel(X轴);ylabel(Y轴);zlabel(Z轴);title(三维曲线图:3-D Plot);function varargout=Untitled_13_Callback(hObject, eventdata, handles,varargin)x,y,z=sphere(45);m=moviein(100);for i=1:100 surf(10*i*x,10*i*y,10*i*z); m(:,i)=getframe; endmovie(m,1);title(球体百变)axis off;functio
27、n Untitled_14_Callback(hObject, eventdata, handles)%function CalendarTable;% calendar 日历% Example:% CalendarTable;S=datestr(now);y,m,d=datevec(S);% d is day% m is month% y is yearDD=Sun,Mon,Tue,Wed,Thu,Fri,Sat;close allfigure;for k=1:7;uicontrol(gcf,style,text,.unit,normalized,position,0.02+k*0.1,0.
28、55,0.08,0.06,.BackgroundColor,0.6 0.8 0.2,ForegroundColor,0.9 0.8 0.1,.String,DD(k),fontsize,18,fontname,times new roman);endh=1;ss=b;qq=eomday(y,m);for k=1:qq;n=datenum(y,m,k);da,w = weekday(n);if k=d;ss=r;enduicontrol(gcf,style,push,.unit,normalized,position,0.02+da*0.1,0.55-h*0.08,0.08,0.06,.Back
29、groundColor,0.7 0.2 0.2,ForegroundColor,r,.String,num2str(k);ss=b;if da=7;h=h+1;endenduicontrol(gcf,style,push,.unit,normalized,position,0.6,0.66,0.12,0.08,.BackgroundColor,0 1 0.8,ForegroundColor,0.1 0.9 0.5,.String,Time:,fontsize,18,fontname,times new roman);Tq=uicontrol(gcf,style,push,.unit,norma
30、lized,position,0.74,0.66,0.17,0.08,.BackgroundColor,0.4 0.5 0.2,ForegroundColor,0.1,0.9,0.9,.fontsize,18,fontname,times new roman);sq=The Calendar Of 2010/5 ;uicontrol(gcf,style,push,.unit,normalized,position,0.14,0.86,0.37,0.08,.BackgroundColor,0 1 1,ForegroundColor,1 0 0,.fontsize,14,fontname,time
31、s new roman,string,sq);trywhile 1set(Tq,String,datestr(now,13);pause(1);endend function Untitled_16_Callback(hObject, eventdata, handles)%h0=figure(toolbar,none,position,200 150 450 250,name,罗盘图); winddirection=54 254 65 84 256 12 235 62 125 324 34 254;windpower=2 5 5 3 6 8 12 7 6 14 10 8;rdirection
32、=winddirection*pi/180;x,y=pol2cart(rdirection,windpower);compass(x,y);desc=风向和风力, 甘肃气象台, 2010年5月20日00:00到, 2010年5月20日12:00;gtext(desc)function Untitled_17_Callback(hObject, eventdata, handles)h=figure(menubar,none,.color,1 0.6 0.4,.position,200 200 320 360,.name,CLOCK简易挂钟);e1=uicontrol(parent,h,.sty
33、le,edit,.fontsize,12,.position,110 20 120 30);b1=uicontrol(parent,h,.style,text,.string,12,.fontsize,12,.position,156 275 20 20);b2=uicontrol(parent,h,.style,text,.string,9,.fontsize,12,.position,60 175 20 20);b3=uicontrol(parent,h,.style,text,.string,6,.fontsize,12,.position,156 75 20 20);b4=uicont
34、rol(parent,h,.style,text,.string,3,.fontsize,12,.position,260 175 20 20);s1=0:pi/1000:2*pi;hl=plot(cos(s1),sin(s1),b-);time=datestr(now); set(e1,string,time(1:11);sita1=pi/2-str2num(time(19:20)*pi/30;sita2=pi/2-str2num(time(16:17)*pi/30+sita1/60;sita3=pi/2-str2num(time(13:14)*pi/6+sita2/12;w1=-pi/30
35、;w2=-pi/1800;w3=-pi/108000;pausetime=1;axis off;axis equalhold onplot(0,0,or);%设置刻度for n=pi*2:-pi/30:pi/30a1=0.95*cos(n):0.05*cos(n)/2:cos(n);b1=0.95*sin(n):0.05*sin(n)/2:sin(n);plot(a1,b1,r-);endfor n=pi*2:-pi/6:pi/30a1=0.9*cos(n):0.1*cos(n)/2:cos(n);b1=0.9*sin(n):0.1*sin(n)/2:sin(n);plot(a1,b1,r-)
36、;end%时钟指针while 1x1=0:0.75*cos(sita1)/2:0.75*cos(sita1);y1=0:0.75*sin(sita1)/2:0.75*sin(sita1);x2=0:0.6*cos(sita2)/2:0.6*cos(sita2);y2=0:0.6*sin(sita2)/2:0.6*sin(sita2);x3=0:0.45*cos(sita3)/2:0.45*cos(sita3);y3=0:0.45*sin(sita3)/2:0.45*sin(sita3);hp1=plot(x1,y1,r-);hp2=plot(x2,y2,r-,linewidth,2);hp3=
37、plot(x3,y3,r-,linewidth,2);sita1=sita1+w1*pausetime;sita2=sita2+w2*pausetime;sita3=sita3+w3*pausetime;pause(pausetime);delete(hp1);delete(hp2);delete(hp3);endhold offfunction varargout= pushbutton2_Callback(hObject, eventdata, handles,varargin)x=0:0.1:5*pi;y1=sin(x);y2=sin(x)+cos(x);plot(x,y1,x,2*y2
38、,*)xlabel(X轴);ylabel(Y轴);title(函数图形)grid onfunction varargout= pushbutton3_Callback(hObject, eventdata, handles,varargin)x1=peaks;plot(x1)grid onxlabel(X轴);ylabel(Y轴);title(矩阵试图)backcolor(1 0 1)function varargout= pushbutton4_Callback(hObject, eventdata, handles,varargin)x,y,z=sphere(25);x=7.8*x;y=7
39、.8*y;z=7.8*z;peaks;shading interp; %使用inter渲染方式colormap(hot);hold on;mesh(x,y,z);hold off;axis equal;axis offhidden offfunction varargout= pushbutton5_Callback(hObject, eventdata, handles,varargin)%clear;x=8*cos(t);y=4*sqr(2)*sin(t);z=4*sqr(2)*sin(t);t=0:pi/50:2*pi;plot3(x,y,z,*);title(Line in 3-D S
40、pace);text(0,0,0,origin);xlabel(x);ylabel(y);zlabel(z);grid;function varargout=pushbutton6_Callback(hObject, eventdata, handles,varargin)n=45;%a=0.02;x=rand(n,1)-0.5;y=rand(n,1)-0.5;h=plot(x,y,*);axis square;grid on;xlabel(X轴);ylabel(Y轴);title(模拟布朗运动)set(h,EraseMode,Xor,Markersize,10); msgbox(再次单击按钮
41、观看演示,提示:)for i=linspace(1,10,4900) drawnow; x=x+arandn(n,1); y=y+arandn(n,1); set(h,xdata,x,ydata,y);endfunction varargout=pushbutton7_Callback(hObject, eventdata, handles,varargin)t=0:pi/15:20*pi;x,y,z=sphere;drawnowx,y,z=cylinder(2+sin(t),30);surf(x,y,z);axis off;function figure1_WindowButtonDownFcn(hObject, eventdata, handles) msgbox(欢迎使用简易Guid界面!,欢迎!)function figure1_CloseRequestFcn(hObject, ev
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922