资源描述:
《第6讲 matlab程序设计基础》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第六讲MATLAB程序设计6.1命令文件与函数文件(M文件)根据调用方式,M文件分为命令文件和函数文件两种。命令文件:命令文件没有输入参数和输出参数,只是一系列命令行的堆积或集合。系统执行命令文件的效果与在命令窗口中一条一条输入这些命令的效果相同,命令文件产生的所有变量都会保留在工作空间里命令文件的调用方法:在MATLAB的命令窗口中直接输入文件名(filename),按Enter键即可。举例:x=0:1/(10*pi):2*pi;y1=sin(x);plot(x,y1,'ro-');title(
2、'sin(x)');xlabel('x轴');ylabel('y轴');legend('y1=sin(x)');M函数:M函数是为了计算过程中参数的传递、程序的嵌套调用而编写的M文件。它用来定义一个函数,定义过程中必须指定函数名和输入输出参数,并由MATLAB语句序列给出一系列的操作和处理,从而生成所需要的数据。M函数文件包括:1、函数定义行。表明该M文件包含一个函数,并且定义函数名、输入和输出参数。2、函数体。是所有计算过程和输入输出参数赋值的MATLAB代码。3、注释。注释语句以“%”开头,可
3、以出现在M文件的任何地方。%后的部分为不执行部分。注:1)M函数返回参数多于一个变量时,应使用方括号;2)输入变量多于一个时,用“,”隔开;3)函数名与M文件名应同名;134)一个函数文件只能定义一个M函数。【例6.1-1】建立函数文件ex5_1.mfunctiony=ex5_1(t)y=sin(t).*exp(-t);(注意:文件名一定用ex5_1)调用(另编一个程序,或在命令窗口输入):t=0:pi/50:pi;y=ex5_1(t);plot(t,y);【例6.1-2】建立函数文件ex5_2.
4、mfunctiony=ex5_2(a,t)ifa==1y=sin(t);elseifa==2y=sin(t).*exp(-t);elsey=cos(t).*sin(t);endplot(t,y);调用:t=0:pi/50:pi;a=1;y=ex5_2(a,t);【例6.1-3】建立函数文件ex5_3.m,该m文件在ex5_3m.m中调用function[y1,y2,y3]=ex5_3(t)y1=sin(t);y2=sin(t).*exp(-t);y3=cos(t).*sin(t);调用程序:cle
5、ar;t=0:pi/50:2*pi;[s1,s2,s3]=ex5_3(t);plot(t,s1,t,s2,t,s3);举例:1、MFunExam_drawLine.m——无输入输出参数2、定义一个名为fun_Exam.m的函数文件,并调用该函数(callFunExma.m)。136.2变量与数据类型1、变量变量是任何程序设计语言的基本单位。与一般程序设计语言不同的是,MATLAB语言并不要求事先对所使用的变量进行声明,也不需要指定变量类型,MATLAB语言自动依据变量值或对变量操作来识别变量类型。
6、在赋值过程中,如果赋值变量已经存在,MATLAB语言将使用新值代替旧值,并以新值类型代替旧值类型。注:1)变量名区分大小写;2)变量名必须以字母开头,不能超过31位;3)变量存在作用区域。在未加特殊说明的情况下,变量为局部变量,即仅在其使用的M文件内有效;要将变量定义为全局变量,应当对变量进行说明,即在变量名前加关键字global。举例:编写一个应用全局变量求销售额总指数的函数,并调用。globalVarFun.mcall_globalVarFun.m2、数据类型double双精度浮点型singl
7、e单精度浮点型float单精度或双精度浮点型int8有符号8位整型-27to27-1int16有符号16位整型-215to215-1int32有符号32位整型-231to231-1int64有符号64位整型-263to263-1unit8无符号8位整型0to28-1unit16无符号16位整型0to216-1unit32无符号32位整型0to232-1unit64无符号64位整型0to264-1char字符型logical逻辑型0or1cell细胞数组struct结构数组6.3细胞数组与结构数组1
8、31、细胞数组细胞数组是以单元为元素的数组,每个元素成为单元,每个单元可以包含其他类型数组,如:矩阵、字符串、复数。细胞数组由{}创建,其数据通过数组下标引用。【例6.3-1】建立1个2×2的细胞数组。clear;a(1,1)={3+2i};a(1,2)={'time'};a(2,1)={[123]};a(2,2)={[1.234;2.456;3.789]};>>a运行结果:a=[3.0000+2.0000i]'time'[1x3double][3x1double]>>a(2,2)