《MATLAB编程入门培训教材课件.ppt》由会员分享,可在线阅读,更多相关《MATLAB编程入门培训教材课件.ppt(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、MATLAB编程入门编程入门 目目 录录第第1章章 MATLAB简介简介第第2章章 MATLAB基本语法基本语法2.1 变量及其赋值变量及其赋值2.2 矩阵的初等运算矩阵的初等运算2.3 元素群运算元素群运算2.4 逻辑判断及流程控制逻辑判断及流程控制2.5 M文件及程序调试文件及程序调试第一章第一章 MATLAB简介简介 MATLAB(MATrix LABoratory,即矩阵实验室即矩阵实验室)是是MathWork公司推出的一套高效率的数值计算和可视化软件。公司推出的一套高效率的数值计算和可视化软件。MATLAB是当今科学界最具影响力、也是最具活力的软件,是当今科学界最具影响力、也是最具活
2、力的软件,它起源于矩阵运算,并已经发展成一种高度集成的计算机语言。它起源于矩阵运算,并已经发展成一种高度集成的计算机语言。它提供了强大的科学运算、灵活的程序设计流程、高质量它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计、便捷的与其他程序和语言接口的功的图形可视化与界面设计、便捷的与其他程序和语言接口的功能。能。MATLAB语言有如下优点:语言有如下优点:1.编程简单使用方便编程简单使用方便 MATLAB的基本数据单元是既不需要指定维数、也不需要的基本数据单元是既不需要指定维数、也不需要说明数据类型的矩阵,而且数学表达式和运算规则与通常的习说明数据类型的矩阵,而且数学表
3、达式和运算规则与通常的习惯相同。因此,在惯相同。因此,在MATLAB环境下,数组的操作与数的操作一环境下,数组的操作与数的操作一样简单。样简单。MATLAB的矩阵和向量操作功能是其他语言无法比拟的。的矩阵和向量操作功能是其他语言无法比拟的。2.函数库可任意扩充函数库可任意扩充 由于由于MATLAB语言库函数与用户文件的形式相同,所以语言库函数与用户文件的形式相同,所以用户文件可以像库函数一样随意调用。所以用户可根据自己用户文件可以像库函数一样随意调用。所以用户可根据自己的需要任意扩充函数库。的需要任意扩充函数库。3.语言简单内涵丰富语言简单内涵丰富 MATLAB语言中最重要的成分是函数,其一般
4、形式为:语言中最重要的成分是函数,其一般形式为:Function a,b,c=fun(d,e,f)fun是自定义的函数名,只要不与库函数名相重,并且符是自定义的函数名,只要不与库函数名相重,并且符合字符串的书写规则即可。这里的函数既可以是数学上的函合字符串的书写规则即可。这里的函数既可以是数学上的函数,也可以是程序块或子程序,内涵十分丰富。每个函数建数,也可以是程序块或子程序,内涵十分丰富。每个函数建立一个同名的立一个同名的M文件,如上述函数的文件名为文件,如上述函数的文件名为fun.m。这种文。这种文件简单、短小、高效,并且便于调试。件简单、短小、高效,并且便于调试。4.简便的绘图功能简便的
5、绘图功能 MATLAB具有二维和三维绘图功能,使用方法十分简便。具有二维和三维绘图功能,使用方法十分简便。而且用户可以根据需要在坐标图上加标题。坐标轴标记。文而且用户可以根据需要在坐标图上加标题。坐标轴标记。文本注释及栅格等,也可以指定图线形式本注释及栅格等,也可以指定图线形式(如实线、虚线等如实线、虚线等)和和颜色,也可以在同一张图上画不同函数的曲线,对于曲面图颜色,也可以在同一张图上画不同函数的曲线,对于曲面图还可以画出等高线。还可以画出等高线。5.丰富的工具箱丰富的工具箱 由于由于MATLAB的开放性,许多领域的专家都为的开放性,许多领域的专家都为MATLAB编写了各种程序工具箱。编写了
6、各种程序工具箱。这些工具箱提供了用户在特别应用领域所需的许多函数,这些工具箱提供了用户在特别应用领域所需的许多函数,这使得用户不必花大量的时间编写程序就可以直接调用这些这使得用户不必花大量的时间编写程序就可以直接调用这些函数,达到事半功倍的效果。函数,达到事半功倍的效果。第二章第二章 MATLAB基本语法基本语法2.1 变量及其赋值变量及其赋值(1)标识符与数)标识符与数 标识符是标识变量名、常量名、函数名和文件名的字符标识符是标识变量名、常量名、函数名和文件名的字符串的总称。标识符可以是英文字母、数字和下划线等符号。串的总称。标识符可以是英文字母、数字和下划线等符号。标识符第标识符第1个字符
7、必须是英文字母,个字符必须是英文字母,MATLAB对大、小写敏对大、小写敏感。感。MATLAB只有一种数据格式,双精度(即只有一种数据格式,双精度(即64位)二进制,位)二进制,对应于十进制对应于十进制16位有效数和位有效数和308次幂。次幂。(2)矩阵及其元素的赋值)矩阵及其元素的赋值变量变量=表达式(数)表达式(数)a=1 2 3;4 5 6;7 8 9x=-1.3 sqrt(3)(1+2+3)/5*4x(5)=abs(x(1)a(4,3)=6.5a=1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000 0 0 6.5
8、000 元素之间用逗号、空格分开。不同行以分号元素之间用逗号、空格分开。不同行以分号隔开。语句结尾用回车或逗号,会显示结隔开。语句结尾用回车或逗号,会显示结果,如果不想显示结果,用分号。果,如果不想显示结果,用分号。元素用()中的数字(下标)来注明,一维元素用()中的数字(下标)来注明,一维用一个下标,二维用两个下标,逗号分开。用一个下标,二维用两个下标,逗号分开。a(5,:)=5,4,3b=a(2,3,1,3)a(2,4,5,:)=a/7 如果赋值元素的下标超过原来矩阵的大如果赋值元素的下标超过原来矩阵的大小,矩阵的行列会自动扩展。小,矩阵的行列会自动扩展。全行赋值,用冒号。全行赋值,用冒号
9、。提取交点元素;提取交点元素;抽取某行元素用空矩阵。抽取某行元素用空矩阵。(4)变量检查)变量检查whowhosinfNaN 检查工作空间中的变量;检查工作空间中的变量;检查变量的详细特征检查变量的详细特征 无穷大无穷大 1/0;非数(非数(Not a Number)0/0 inf/inf 0*inf。系统不停止运算,结果仍为系统不停止运算,结果仍为inf或或NaN。(5)基本赋值矩阵)基本赋值矩阵f1=ones(3,2)f2=zeros(2,3)f4=eye(2)全全1矩阵矩阵 全全0矩阵矩阵 单位矩阵是单位矩阵是nn阶的方阵。对角线上元素为阶的方阵。对角线上元素为1。2.2 矩阵的初等运算
10、(矩阵的初等运算(3_3计应计应1、2)(1)矩阵的加减乘法)矩阵的加减乘法i.加、减法:相加减的两矩阵阶数必须相同,加、减法:相加减的两矩阵阶数必须相同,对应元素相加减。对应元素相加减。n,m=size(fb2)x=-1 0 1;y=x-1y=-2 -1 0 语句语句size检查矩阵阶数,两矩检查矩阵阶数,两矩阵相加,阶数必须相同。阵相加,阶数必须相同。两相加减的矩阵中有一个是标两相加减的矩阵中有一个是标量时,量时,MATLAB将标量扩展成将标量扩展成同等元素矩阵,与另一矩阵相同等元素矩阵,与另一矩阵相加减。加减。(4)矩阵结构形式的提取与变换)矩阵结构形式的提取与变换A=8 1 6 0;3
11、 5 7 1;4 9 2 2B1=fliplr(A)B2=flipud(A)B3=reshape(A,2,6)提取矩阵中某些特殊结构的元素,提取矩阵中某些特殊结构的元素,组成新的矩阵,改变矩阵结构。组成新的矩阵,改变矩阵结构。fliplr矩阵左右翻转矩阵左右翻转 flipud矩阵上下翻转矩阵上下翻转 reshape阶数重组(元素总数不变)阶数重组(元素总数不变)B8=A(:)将元素按列取出排成一列将元素按列取出排成一列 A=8 1 6 0 3 5 7 1 4 9 2 2B1=fliplr(A)B1=0 6 1 8 1 7 5 3 2 2 9 4B2=flipud(A)B2=4 9 2 2 3
12、5 7 1 8 1 6 0B3=reshape(A,2,6)B3=8 4 5 6 2 1 3 1 9 7 0 2B4=rot90(A)B4=0 1 2 6 7 2 1 5 9 8 3 4B5=diag(A)B5=8 5 2B6=tril(A)B6=8 0 0 0 3 5 0 0 4 9 2 0B7=triu(A)B7=8 1 6 0 0 5 7 1 0 0 2 2B8=A(:)B8=8 3 4 1 5 9 6 7 2 0 1 22.3 元素群运算元素群运算(1)数组及其赋值)数组及其赋值数组是单行或单列的矩阵,一个数组是单行或单列的矩阵,一个N阶的数组可以表述为一个阶的数组可以表述为一个N组向
13、量。组向量。t=0:0.02:1z=10:-3:-5k=1:6用两个冒号组成等增量语句用两个冒号组成等增量语句格式:格式:t=初值:增量:终值初值:增量:终值增量也可以设为负值,此时初值要比终值增量也可以设为负值,此时初值要比终值大大增量为增量为1时,增量值可以省略。时,增量值可以省略。(2)元素群的四则运算和幂次运算)元素群的四则运算和幂次运算 元素群的运算是矩阵中所有元素按单个元素运算。运算符前加元素群的运算是矩阵中所有元素按单个元素运算。运算符前加.号,表号,表示元素群运算。示元素群运算。元素群的运算的两个矩阵必须是同阶的。(标量会自动扩展为同阶矩元素群的运算的两个矩阵必须是同阶的。(标
14、量会自动扩展为同阶矩阵参与运算)阵参与运算)x=1,2,3y=4,5,6z=x.*yz=x.yz=x.yz=x.2z=4 10 18 x*y不能成立不能成立z=4.0 2.5 2.0 元素群没有左除右除之分元素群没有左除右除之分z=1 32 729 xy 能成立吗?能成立吗?z=1 4 9 x2能成立吗?能成立吗?(3)元素群的函数)元素群的函数 除矩阵运算的乘、右除、左除、幂指数(除矩阵运算的乘、右除、左除、幂指数(/)、)、sqrtm、expm、logm函数外,基本函数库中的常用函数都可用于元素群运算。自变量可以是函数外,基本函数库中的常用函数都可用于元素群运算。自变量可以是任意阶的矩阵。
15、任意阶的矩阵。基本函数库(基本函数库(elfun)x=0:0.1:pi/4x=0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000disp(显示显示 x sin(x)cos(x)tan(x)disp(x,sin(x)cos(x)tan(x)显示显示 x sin(x)cos(x)tan(x)0 0 1.0000 0 0.1000 0.0998 0.9950 0.1003 0.2000 0.1987 0.9801 0.2027 0.3000 0.2955 0.9553 0.3093 0.4000 0.3894 0.9211 0.4228 0.5000
16、 0.4794 0.8776 0.5463 0.6000 0.5646 0.8253 0.6841 0.7000 0.6442 0.7648 0.84232.4 逻辑判断及流程控制逻辑判断及流程控制 1.关系运算关系运算a=2+2=4a=(2+2=4)a=(34)a=(43)a=(3=4)a=(43)a=(34)等于等于a=1a=1小于小于a=1 a=0小于等于小于等于a=1a=0大于大于a=1a=0a=(4=3)a=(3=4)a=(3=4)A=magic(6)rem(A,3)p=(rem(A,3)=0)lp=find(p)大于等于大于等于a=1a=0不等于不等于a=1魔方矩阵,每行、每列、对
17、角线的元素之和魔方矩阵,每行、每列、对角线的元素之和=(n3+n)/2A整除整除3,求余数,求余数余数为余数为0,是真,即整除,是真,即整除找出找出p矩阵中不为零元素的序号,矩阵元素是按列排序号的。矩阵中不为零元素的序号,矩阵元素是按列排序号的。A=magic(6)A=35 1 6 26 19 24 3 32 7 21 23 25 31 9 2 22 27 20 8 28 33 17 10 15 30 5 34 12 14 16 4 36 29 13 18 11rem(A,3)ans=2 1 0 2 1 0 0 2 1 0 2 1 1 0 2 1 0 2 2 1 0 2 1 0 0 2 1 0
18、 2 1 1 0 2 1 0 2p=(rem(A,3)=0)p=0 0 1 0 0 1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 1 0 0 1 0 0 0 1 0 0 1 0lp=find(p)lp=2 5 9 12 13 16 20 23 27 30 31 34矩阵元素的序号排法:矩阵元素的序号排法:nm阵中下标为阵中下标为(j,k)的元素序号为的元素序号为 l=(k-1)*n+j171319253128142026323915212733410162228345111723293561218243036符号符号意义意义符号符号意义意义符号符号意义意义+加加-
19、减减*矩阵乘矩阵乘矩阵左除矩阵左除/矩阵右除矩阵右除矩阵乘幂矩阵乘幂.*矩阵元素乘矩阵元素乘./矩阵元素除矩阵元素除.矩阵元素乘幂矩阵元素乘幂()优先,下标输优先,下标输入参量入参量矩阵,向量输矩阵,向量输入变量入变量:整行(列)等增整行(列)等增量赋值量赋值.小数点小数点.母目录母目录行命令延续符行命令延续符,语句分割符,语句分割符,显示显示;语句分割符,语句分割符,不显示不显示=赋值符赋值符转置,引用转置,引用!操作系统命令操作系统命令%注释符注释符=关系相等符关系相等符关系大小符关系大小符=关系不等符关系不等符&逻辑与逻辑与|逻辑或逻辑或逻辑非逻辑非xor异或异或kronKronecke
20、r积积数数学学及及逻逻辑辑运运算算符符号号exist检查变量或函数是否有定检查变量或函数是否有定义义any检查向量中有无非零元素检查向量中有无非零元素all检查向量中元素是否全为检查向量中元素是否全为非零非零find找到非零元素的序号找到非零元素的序号isnan元素为元素为NaN时得时得1isinf元素为元素为Inf时得时得1isfinite元素为有限值时得元素为有限值时得1isempty矩阵为空阵时得矩阵为空阵时得1isreal矩阵为实数阵时得矩阵为实数阵时得1issparse矩阵为稀疏阵时得矩阵为稀疏阵时得1isstr为文本字符串时得为文本字符串时得1isglobal变量为全局变量时得变量
21、为全局变量时得1bitand按位求按位求“与与”bitcmp按位求按位求“非非”(补)(补)bitor按位求按位求“或或”bitmax最大浮点整数最大浮点整数bitxor按位求按位求“异或异或”bitset设置位设置位bitget获获取位取位bitshift按位移动按位移动union集合集合“合合”unique去除集合中的重复元素去除集合中的重复元素intersect集合集合“交交”setdiff集合集合“差差”setxor集合集合“异或异或”ismember是集合中的元素时为真是集合中的元素时为真逻逻辑辑字字符符检检查查位位运运算算 集集合合运运算算 2.逻辑运算逻辑运算A=0 0 1 1B
22、=0 1 0 1A&BA|BAxor(A,B)将逻辑运算用于元素群,得出同阶的将逻辑运算用于元素群,得出同阶的0-1矩阵。矩阵。与与或或非非异或异或3.流程控制语句流程控制语句(1)if语句语句if(表达式表达式)语句组语句组A,endif(表达式表达式1)语句组语句组A,else 语句组语句组B,endif(表达式表达式1)语句组语句组A,elseif (表达式表达式2)语句组语句组B,else 语句组语句组C,end n=input(n=),if rem(n,2)=0 a=even,else a=odd,end n=7 a=odd;n=8 a=even n=a=odd n=input(n=
23、),if isempty(n)=1 a=empty,elseif rem(n,2)=0 a=even,else a=odd,end n=a=empty 输入数输入数n,判断奇偶性。如果用户没有键,判断奇偶性。如果用户没有键入数就回车,程序会判断为入数就回车,程序会判断为odd。修改为用户无输入时程序自动中止。修改为用户无输入时程序自动中止。(2)while语句语句while (表达式表达式)语句组语句组A,endx=1;while x=inf,x1=x;x=2*x;end,x1x1=8.9885e+307x=1;while x=inf,x1=x;x=1.1*x;end,x1x1=1.7837e
24、+308求求MATLAB中的最中的最大实数。大实数。X不断增不断增大,直到无法表示大,直到无法表示它的值,只能用它的值,只能用inf表示为止。表示为止。y=1;while 1+y1,y1=y y=y/2;end,y1 y1=2.2204e-016求求MATLAB相对精度,相对精度,y不断减小,直至不断减小,直至MATLAB分不出分不出1+y与与1的差别为止。的差别为止。(3)for语句语句for k=初值:增量:终值初值:增量:终值 语句组语句组A,end将语句组将语句组A反复执行反复执行N次,每次执行时程序中的次,每次执行时程序中的k值不同。值不同。N=1+(终值(终值-初值)初值)/增量增
25、量用用for语句求三角函数表语句求三角函数表for x=0:0.1:pi/4 disp(x,sin(x),cos(x),tan(x),end运行结果运行结果 x sin(x)cos(x)tan(x)0 0 1 0 1/10 839/8404 1195/1201 1499/14940 1/5 209/1052 295/301 374/1845 3/10 409/1384 1647/1724 275/889 2/5 368/945 2882/3129 1777/4203 1/2 501/1045 1699/1936 820/1501 3/5 1153/2042 430/521 979/1431 7
26、/10 947/1470 992/1297 486/577 break,continue 1、两种语句一般应在循环语句中。、两种语句一般应在循环语句中。2、break 是中止循环的命令,在多重循环中,是中止循环的命令,在多重循环中,break只能使程序跳出包含它的最内部的那个循环。只能使程序跳出包含它的最内部的那个循环。3、continue 是中止本次循环,执行下一次循环。是中止本次循环,执行下一次循环。(4)switch语句语句switch-case-otherwiseswitch 表达式(标量或字符表达式(标量或字符串)串)case 值值1语句组语句组ACase 值值2语句组语句组B.Ot
27、herwise语句组语句组Nend 当表达式的值(或字当表达式的值(或字符串)与某符串)与某case语句中的语句中的值(或字符串)相同时,值(或字符串)相同时,它就执行该它就执行该case语句后的语句后的语句组,然后跳到终点的语句组,然后跳到终点的end。case语句可以有语句可以有N-1个,个,如果没有任何一个如果没有任何一个case值值能与表达式值相符,则执能与表达式值相符,则执行行otherwise后面的语句组后面的语句组N。n=input(n=),switch mod(n,2),case 1,a=奇奇,case 0,a=偶偶,otherwise,a=空空,endn=5 a=奇奇n=in
28、put(n=),switch rem(n,2),case 1,a=奇奇,case 0,a=偶偶,otherwise,a=空空,end n=8 a=偶偶判断输入数判断输入数n的奇、偶、空的程序的奇、偶、空的程序mod(x,m)x整除整除m取正余数,取正余数,rem(a,b)a整除整除b,求余数,求余数n=负数负数 n=-5 a=奇n=-8a=偶2.5 M文件、文件、M函数及程序调试函数及程序调试M文件是文本文件,扩展名文件是文本文件,扩展名*.m。(example.m)可以用任何编可以用任何编辑器来建立,可直接阅读。辑器来建立,可直接阅读。MATLAB程序可直接调用程序可直接调用M文件文件并执行
29、。并执行。M文件分为两种:一种是主程序,为用户解决特定的问题编文件分为两种:一种是主程序,为用户解决特定的问题编制的;一种是子程序,函数文件,必须由其他制的;一种是子程序,函数文件,必须由其他M文件来调用,文件来调用,函数文件可以递归调用(自己调用自己)。函数文件可以递归调用(自己调用自己)。MATLAB软件的软件的大部分功能是来自其建立的函数集。大部分功能是来自其建立的函数集。1主程序文件主程序文件主程序文件格式特征:主程序文件格式特征:(1)用)用clear、close all等语句开始,清除原有的变量和图等语句开始,清除原有的变量和图形。形。注释行以注释行以%号开始,增加可读性。号开始,
30、增加可读性。MATLAB不执行不执行%号后面的号后面的任何内容。在键入任何内容。在键入“help 文件名文件名example.m”时,屏幕会显时,屏幕会显示以示以%号起始的行的内容,注释可以是汉字的。号起始的行的内容,注释可以是汉字的。(2)程序的主体)程序的主体全局变量:在子程序中和主程序中共用的变量。应全局变量:在子程序中和主程序中共用的变量。应在程序的起始部分注明。在程序的起始部分注明。全局变量语句:全局变量语句:global 变量名变量名1 变量名变量名2 程序必须用半角英文字母和符号编制(包括标点符程序必须用半角英文字母和符号编制(包括标点符号),只有号),只有%号后面的注释可以用中
31、文。号后面的注释可以用中文。要注意流程控制语句的缩进及与要注意流程控制语句的缩进及与end的对应关系。的对应关系。选项可以自动对程序进行缩进排版。选项可以自动对程序进行缩进排版。元素之间用逗号、空格分开。不同行以分号隔开。元素之间用逗号、空格分开。不同行以分号隔开。语句结尾用回车或逗号,会显示结果,如果不想显语句结尾用回车或逗号,会显示结果,如果不想显示结果,用分号。示结果,用分号。(3)M文件的文件名、路径名不能用中文,要按文件的文件名、路径名不能用中文,要按MATLAB的标识符编制,因为的标识符编制,因为M文件也就是文件也就是MATLAB的调用命令。的调用命令。在在MATLAB的命令窗键入
32、程序的的命令窗键入程序的M文件名后,系统文件名后,系统就开始执行就开始执行M文件中的程序。文件中的程序。例例1列出一个求列出一个求fibonnaci数的程序,它是一个数列,从数的程序,它是一个数列,从1,1开始,由数列的最后两个元素之和生成新的元素,依次递开始,由数列的最后两个元素之和生成新的元素,依次递推。推。%计算计算fibonnaci数的数的M文件文件clear,close allN=input(输入最大数值范围输入最大数值范围 N=)f=1,1;i=1;%变量的初始化变量的初始化while f(i)+f(i+1)N%循环条件检验循环条件检验f(i+2)=f(i+1)+f(i);i=i+
33、1;%求求fibonnaci数的算式数的算式endf,plot(f)%显示和绘图显示和绘图输入最大数值范围输入最大数值范围 N=20N=20f=1 1 2 3 5 8 13将程序以文件名将程序以文件名fibon.m存入一存入一MATLAB搜索目录下,在搜索目录下,在MATLAB命令窗中键入命令窗中键入fibon,即可执行。,即可执行。例例2求素数的程序。只能被自身和求素数的程序。只能被自身和1除净的数。除净的数。%求素数求素数(prime number)的程序的程序clear,close allN=input(N=),x=2:N;for u=2:sqrt(N)n=find(rem(x,u)=0
34、&x=u);x(n)=;end,x N=44x=2 3 5 7 11 13 17 19 23 29 31 37 41 43人机交互命令:人机交互命令:echo on(off)在执行在执行M文件每行程序前先显示其内容。文件每行程序前先显示其内容。pause(n)程序执行到此,暂停程序执行到此,暂停n秒,再继续。秒,再继续。keyboard程序执行到此暂停,在屏幕上显示字符程序执行到此暂停,在屏幕上显示字符K,用户可,用户可以在命令窗进行任何操作,键入字符串以在命令窗进行任何操作,键入字符串return,恢复运行原,恢复运行原来的程序。来的程序。input(提示符提示符)程序执行到此暂停,屏幕显示
35、引号中的程序执行到此暂停,屏幕显示引号中的字符串,要求用户输入数据。数据输入后,程序继续运行。字符串,要求用户输入数据。数据输入后,程序继续运行。c(control-c)强行停止程序运行的命令。强行停止程序运行的命令。menu 用来产生人际交互的备选择菜单的命令。用来产生人际交互的备选择菜单的命令。2函数文件函数文件 函数文件是用来定义子程序的。与主程序文件的主要区别有函数文件是用来定义子程序的。与主程序文件的主要区别有3点:点:(1)由)由function起头,后面跟的函数名,函数名必须与文件名相同。起头,后面跟的函数名,函数名必须与文件名相同。(2)有输入输出变元(变量),可以进行变量传递
36、。)有输入输出变元(变量),可以进行变量传递。(3)除非用)除非用global声明,程序中的变量均为局部变量,不保存在工作空间声明,程序中的变量均为局部变量,不保存在工作空间中。中。例例3函数文件函数文件mean.m function y=mean(x)%文件的第一条语句定义了函数名、输入变元及输出变元。(这条语句可以区分程序文件和文件的第一条语句定义了函数名、输入变元及输出变元。(这条语句可以区分程序文件和函数文件)输入变元、输出变元可以有若干个,必须在第一条语句中列出。函数文件)输入变元、输出变元可以有若干个,必须在第一条语句中列出。%MEAN求平均值。对于向量,求平均值。对于向量,mea
37、n(x)返回该向量返回该向量x中各元素的平均值中各元素的平均值%对于矩阵,对于矩阵,mean(x)是一个包含各列元素平均值的行向量是一个包含各列元素平均值的行向量m,n=size(x);%变量变量m,n和和y都是函数都是函数mean的局部变量,当的局部变量,当mean文件执行完毕,这些变量值会自动消失,文件执行完毕,这些变量值会自动消失,不保存在工作空间中。如果在执行该文件前,工作空间中已有同名的变量,系统会把两者不保存在工作空间中。如果在执行该文件前,工作空间中已有同名的变量,系统会把两者看作各自无关的变量。如果希望将两者看作同一变量,则必须在主程序和子程序中都加入看作各自无关的变量。如果希
38、望将两者看作同一变量,则必须在主程序和子程序中都加入global语句,对此共同变量进行声明。语句,对此共同变量进行声明。If m=1 M=n;end%处理单行向量处理单行向量y=sum(x)/m程序调试程序调试主程序不需要专门的调试命令,需要用调试命令的主要是函主程序不需要专门的调试命令,需要用调试命令的主要是函数程序。因为函数程序出错停机时,变量不能保存,无现场数程序。因为函数程序出错停机时,变量不能保存,无现场记录。会给调试带来很大困难,解决方法:记录。会给调试带来很大困难,解决方法:(1)把某些分号改为逗号,使中间结果能显示在屏幕上,)把某些分号改为逗号,使中间结果能显示在屏幕上,作为查
39、错依据。作为查错依据。(2)在子程序中适当部位加)在子程序中适当部位加keyboard命令。系统会暂停,命令。系统会暂停,等待用户键入命令。这时子程序的变量还存在于工作空间中,等待用户键入命令。这时子程序的变量还存在于工作空间中,可以对它们进行检查。可以对它们进行检查。(3)将函数文件的第一行加)将函数文件的第一行加%号,成为程序文件,进行初步号,成为程序文件,进行初步调试。第一行中的输入变元,可改用调试。第一行中的输入变元,可改用input或赋值语句来输或赋值语句来输入,调好后再改回函数文件。入,调好后再改回函数文件。(4)使用)使用MATLAB提供的调试命令。调试命令较繁琐,不提供的调试命令。调试命令较繁琐,不作介绍。作介绍。END!