1、 MATLAB 实习报告信10-1 学号:10105010117 张旭冉一.概述 MATLAB 作为一种高级科学计算软件,是进行算法开发、数据可视化、数据分析以及数值计算的交互式应用开发环境。世界上许许多多的科研工作者都在使用 MATLAB 产品来加快他们的科研进程,缩短数据分析和算法开发的时间,研发出更加先进的产品和技术。二.实验目的1.熟悉MATLAB的软件环境2.熟悉MATLAB的基本使用方法3.熟练运用MATLAB的数组和数组、矩阵运算、数学运算的运算方法4.熟悉MATLAB的字符串、单元数组5.熟悉MATLAB的程序设计6.熟悉MATLAB的符号计算功能7.熟悉MATLAB的绘图及句
2、柄图形8 .熟悉MATLAB的GUI设计 三.实验过程1.熟悉MATLAB的软件环境MATLAB的语言的基本功能和特点:它是一种高级科学计算语言,相对于传统的 C、C+ 或者 FORTRAN 语言,MATLAB 提供了高效快速解决各种科学计算问题的方法。它具有数学计算、开发工具、数据的可视化、交互式编辑创建图形、集成的算法开发编程语言和环境、图形用户界面开发环境GUIDE、开放性、可扩展性强 、专业应用工具箱等强大的功能。具有易于学习、使用方便、支持多种操作系统、丰富的内部函数、强大的图形和符号功能等优点。2.熟悉MATLAB的基本使用方法路径设置:除 MATLAB 默认的搜索路径外,用户可以
3、设置搜索路径。设置方法为:选择 MATLAB 窗口中的 File | Set Path 命令,进入路径搜索对话框。MATLAB 的搜索顺序:当在命令窗口中或者一个 M 文件中输入一个元素名称时,MATLAB 按照下面的顺序搜索该元素的意义,以元素 foo 为例: 1)查找工作区中是否存在名为 foo 的变量; 2)在当前路径中查找是否存在名 foo.m 的文件; 3)按照顺序查找搜索路径中是否存在该文件。如果存在多个名为 foo.m 的文件,则调用首先查到的文件。 因此,在为变量和函数命名时,需考虑 MATLAB 的路径搜索顺序,合理为变量和函数命名,保证程序的正确运行。 3.熟练运用MATL
4、AB的数组和数组、矩阵运算、数学运算的运算方法例题1:用一元二次方程求根公示解方程x2+2*x+3=0的根。 解:a=(-2+sqrt(2*2-4*1*3)/2*1 a=-1.0000+1.4142i a=(-2-sqrt(2*2-4*1*3)/2*1 a=-1.0000-1.4142i例题2:三角边长分别为3、4、5,求其面积。Area=sqrt(s(s-a)(s-b)(s-c),s=(a+b+c)/2 解:a=3;b=4;c=5; S=.6 Area=sqrt(s*(s-a)*(s-b)*(s-c)例题3:求矩阵方程AX=B-2X,其中,. 解:A=1 2 0;1 3 1;0 1 2; B
5、=1 0;0 1;-1 0 ; X=(A+2*eve(3))B X=0.3469 -0.1633 -0.0204 0.2499-0.2449 -0.0612例题四:求矩阵的行列式,秩,逆,特征值,特征向量,条件数,LU分解 解: A=2 1 0;1 2 1;0 1 2; lambda=eig(A) lambda= 0.5858 2.0000 3.4142 rank(A) ans=3 x=inv(A) X=0.7500 -0.5000 0.2500-0.500 -0.0000 -0.50000.2500 -0.5000 0.7500 IV,DI=eig(A) V= 0.5000 -0.7000
6、0.5000 -0.7071 -0.0000 0.7071 0.5000 -0.7071 0.5000 P= 0.5858 0 0 0 2.000 0 0 0 3.4142 cond(A) Ans=5.8284 L,U=lu(A) L= 1.0000 0 0 0.5 1.0000 0 0 0.6667 1.0000 U= 2.0000 1.0000 0 0 1.5000 1.0000 0 0 1.3333例题4:鸡和兔子关在一个笼子里,共有头36,脚100,问鸡和兔子各多少? 解: A=1 ,1;2,4 B=36;100 X=inv(A)*B X=22 14例题5:球积分,lnxdx。 fun
7、(x)x.x3;q=quad(fun,0,1) q=0.2500 fun(x)x.x2.*log(x); q=quad(fun,1,3) q=6.9986例题6: 解:fun(x,y)x.y; q=dblquad(fun,0,1,0,1) q=0.2500例题7:求z=x2+2*x+3的极值 解:fh(x)x.2+2.*x+3;fminbnd(fh,-2,0) Ans=-1 4.熟悉MATLAB的字符串、单元数组1), 字符串的生成 MATLAB 中的字符串为 ASCII 值的数值数组,作为字符串表达式进行表示。在 MATLAB 中,生成字符串的方法为 stringname=the conte
8、nt of the string。str=Command Windowstr1=The MATLAB Helpis a good reference for using Matlabstr1=The MATLAB Helpis a good reference for using Matlabstr=qinghua university peiking university2). 字符串的操作 字符串的显示字符串的显示有两种方式:直接显示和利用 disp 函数进行显示。字符串的执行在 MATLAB 中可以用函数 eval 来执行字符串。str=MATLAB 2006a str, disp(st
9、r)for n = 1:3 magic_str = M, int2str(n), = magic(n); eval(magic_str)end3). 字符串的比较字符串的比较主要为比较两个字符串是否相同,字符串中的子串是否相同和字符串中的个别字符是否相同。用于比较字符串的函数主要是 strcmp 和 strncmp。 strcmp:用于比较两个字符串是否相同。用法为 strcmp(str1,str2),当两个字符串相同时返回1,否则返回0。当所比较的两个字符串是单元字符数组时,返回值为一个列向量,元素为相应行比较的结果。 strncmp:用于比较两个字符串的前面几个字符是否相同。用法为 str
10、ncmp(str1,str2,n), 当字符串的前 n 个字符相同时返回1,否则返回 0。当所比较的两个字符串时单元数组时,返回值为列向量,元素为相应行比较的结果。 str1=MATLAB,str2=MATlab strcmp(str1,str2), strncmp(str1,str2,3), strncmp(str1,str2,4)4). 字符串的查找和替换一个字符串是由单引号括起来的简单文本。在字符串中的每个字符都是数组中的一个元素,这些数字是由 ASCII 字符表示的。这些字符和整数之间可以相互转化。5.熟悉MATLAB的程序设计1)。M文本文件介绍一个 M 文件通常包含五个部分,函数定
11、义语句、H1 帮助行、帮助文本、函数体或者脚本文件语句和注释语句。H1 行为紧随函数定义语句后面的一行注释语句。当用户通过 help 命令查询该函数的说明信息时 H1 行显示为第一行,另外 lookfor 函数只检索和显示 H1 行。帮助文本为 H1 行后面连续的注释行,当在命令窗口中通过 help 命令查询该函数的说明信息时则在窗口中显示这些内容。函数体为 M 文件的主要部分,是函数的执行代码。除上面的 H1 行和帮助文本外,为了易于理解,可以在书写代码时添加注释语句。这些注释语句在编译程序时会被忽略,因此不会影响编译速度和程序运行速度,但是能够增加程序的可读性。例 1: 某日测得从零点开始
12、每隔2小时的环境温度数据如下(): 12,9,9,10,18,24,28,27,25,20,18,15,13,推测中午1点(即13点)的温度,并画出这一天的温度曲线解 1) 写脚本文件并运行 x=0:2:24; y=12 9 9 10 18 24 28 27 25 20 18 15 13; x1=13; y1=interp1(x,y,x1),y2=interp1(x,y,x1,spline)2)写脚本文件并运行 xi=0:1/3600:24; y1i=interp1(x,y,xi); y2i=interp1(x,y,xi,spline); plot(x,y,o,xi,y1i,-, xi,y2i
13、,-.)输出这一天的温度曲线,见图12)。一个完整的 M 文件的结构为:function f = fact(n) 函数定义语句% Compute a factorial value. H1 行% FACT(N) returns the factorial of N, 帮助文本% usually denoted by N!% Put simply, FACT(N) is PROD(1:N). 注释语句f = prod(1:n); 函数体6.熟悉MATLAB的符号计算功能1)。符号变量、表达式的生成 例题1:用sym函数生成符号表达式aex+bsinx 解: a=sym(a); b=sym(b);
14、 x=sym(x); e=sym(e); f=a*ex+b*sin(x) f=sym(a*ex+b*sin(x)例题2: 用syms函数生成符号变量解: syms a b f=a+b syms x y 5 syms x y f12)创建符号方程创建符号方程的方法有两种: 利用符号表达式创建 先创建符号变量,通过符号变量的运算生成符号函数 直接生成符号表达式 syms a b x; f=a*sin(x)+b*cos(x), g=sym(x2+y2+z2) 创建 M 文件 利用 M 文件创建的函数,可以接受任何符号变量作为输入,作为生成函数的自变量function z = sinc(x)if is
15、equal(x,sym(0) z = 1;else z = sin(x)/x;end syms x y; sinc(x), sinc(y) 7. .熟悉MATLAB的绘图及句柄图形例题1.在一个窗口中画出y=sin(2x),z=cos(x),0x2,并适当标注,写出程序并记下简图。 解:h=figure;x=0:0.01*pi:2*pi;polt(x,sin(2*x),g-*) hold on; plot(x , cos(x),b-o) title(sin(2*x)和cos(x)例题2:例10-1 创建核心(Core)图形对象。x,y = meshgrid(-2:.4:2);Z = x.*ex
16、p(-x.2-y.2);fh = figure(Position,350 275 400 300,Color,w);ah = axes(Color,.8 .8 .8,XTick,-2 -1 0 1 2,. YTick,-2 -1 0 1 2);sh = surface(XData,x,YData,y,ZData,Z,. FaceColor,get(ah,Color)+.1,. EdgeColor,k,Marker,o,. MarkerFaceColor,.5 1 .85);view(3)8 .熟悉MATLAB的GUI设计1). GUI 简介MATLAB 中的 GUI 程序为事件驱动的程序。事件
17、包括按下按钮,鼠标单击等。GUI 中的每个控件与用户定义的语句相关。当在界面上执行某项操作时,则开始执行相关的语句。MATLAB 提供了两种创建图形用户接口的方法:通过 GUI 向导创建的方法和编程创建 GUI 的方法。用户可以通过需要,选择适当的方法创建图形用户接口。通常可以参考下面的建.2).程序l 弹出菜单的响应函数:% - Executes on selection change in data_pop_up.function data_pop_up_Callback(hObject, eventdata, handles)% hObject handle to data_pop_up
18、 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Determine the selected data set.str = get(hObject, String);val = get(hObject,Value);% Set current data to the selected data set.switch strval;% - Executes on but
19、ton press in contourpushbutton.function contourpushbutton_Callback(hObject, eventdata, handles)% hObject handle to contourpushbutton (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Display contour plot of the currently selected data.contour(handles.current_data);四.总结在实验中经常会遇到通过MATLAB生成的图像不令人满意的时候,通过对生成图像的多方面修改总结,我初步掌握了处理图像更加完好的基本方法,这样对以后的应用会有很大的帮助,毕竟我们希望运算出来的结果一目了然,形象而精确。完美的图像就给我们增加了很强的视觉效果让我们更容易理解和认识抽象事务。