电气系统仿真课件5-程序设计.ppt

上传人(卖家):晟晟文业 文档编号:5157825 上传时间:2023-02-15 格式:PPT 页数:54 大小:388.50KB
下载 相关 举报
电气系统仿真课件5-程序设计.ppt_第1页
第1页 / 共54页
电气系统仿真课件5-程序设计.ppt_第2页
第2页 / 共54页
电气系统仿真课件5-程序设计.ppt_第3页
第3页 / 共54页
电气系统仿真课件5-程序设计.ppt_第4页
第4页 / 共54页
电气系统仿真课件5-程序设计.ppt_第5页
第5页 / 共54页
点击查看更多>>
资源描述

1、第第5章章 MATLAB程序设计程序设计M文件简介文件简介MATLAB程序控制结构程序控制结构函数调用和参数传递函数调用和参数传递 MATLAB有两种工作方式:有两种工作方式:(1)交互式的命令行工作方式)交互式的命令行工作方式 通常通常matlab以以指令驱动模式指令驱动模式工作,即在工作,即在matlab 窗口下当用户输入窗口下当用户输入单行指令单行指令时,时,matlab 立即处理这条指令,并显示结果,这立即处理这条指令,并显示结果,这就是就是matlab命令行方式命令行方式。缺点:缺点:a.命令行操作时,命令行操作时,matlab窗口只允许一次执行窗口只允许一次执行一行上的一个或几个语

2、句。一行上的一个或几个语句。b.命令行方式程序可读性差命令行方式程序可读性差c.不能存储,当处理复杂问题和大量数据时是不能存储,当处理复杂问题和大量数据时是不方便的,应编写成能存储的程序文件。不方便的,应编写成能存储的程序文件。(2)M文件的程序工作方式文件的程序工作方式 较多的命令较多的命令 重复输入重复输入 将要输入的所有指令按顺序放到一个将要输入的所有指令按顺序放到一个扩扩展名为展名为“.m”的文本文件的文本文件中,每次运行时中,每次运行时只只要输入要输入M文件的文件名即可文件的文件名即可。这种工作模式。这种工作模式称为称为M文件的程序工作方式。文件的程序工作方式。5.1 M文件简介文件

3、简介 用用MATLAB语言编写的程序,称为语言编写的程序,称为M文件文件。5.1.1 M文件的建立与编辑文件的建立与编辑 M文件是一个文本文件,它可以用任何编辑程文件是一个文本文件,它可以用任何编辑程序来建立和编辑,而一般常用且最为方便的是序来建立和编辑,而一般常用且最为方便的是使用使用MATLAB提供的文本编辑器提供的文本编辑器。1、建立新的、建立新的M文件文件 启动启动MATLAB文本编辑器有文本编辑器有3种方法:种方法:方法一:方法一:菜单操作菜单操作 File New M-file MATLAB Editor窗口窗口 输入输入M文件的内容并存盘。文件的内容并存盘。方法二:命令操作方法二

4、:命令操作 在在MATLAB命令窗口输入命令命令窗口输入命令edit,启动,启动MATLAB文本编辑器后,输入文本编辑器后,输入M文件的内容并存盘。文件的内容并存盘。方法三:命令按钮操作方法三:命令按钮操作 单击单击MATLAB主窗口工具栏上的主窗口工具栏上的New M-File命令命令按钮按钮 ,启动,启动MATLAB文本编辑器后,输入文本编辑器后,输入M文文件的内容并存盘。件的内容并存盘。注意:注意:M文件的存放位置默认情况下是文件的存放位置默认情况下是 MATLAB安装目录下的安装目录下的work子目录。子目录。2、编辑已有的、编辑已有的M文件文件方法一:方法一:菜单操作菜单操作 Fil

5、e Open Open对话框对话框 M文件文件方法二:方法二:命令操作命令操作 在在MATLAB命令窗口输入命令:命令窗口输入命令:edit 文件名文件名方法三:方法三:命令按钮操作命令按钮操作工具栏工具栏Open File 选择所需打开的选择所需打开的M文件。文件。MATLAB提供了两种源程序文件格式:提供了两种源程序文件格式:脚脚本文件本文件和和函数文件函数文件,这两种文件的扩展名均为,这两种文件的扩展名均为“.m”。M脚本(脚本(Scripts)文件(命令行文件):没有)文件(命令行文件):没有输入参数,也不返回输出参数;输入参数,也不返回输出参数;M函数(函数(Functions)文件

6、:可以输入参数,也)文件:可以输入参数,也可返回输出参数。可返回输出参数。5.1.2 M脚本文件和脚本文件和M函数文件函数文件一、一、M脚本文件(命令行文件)脚本文件(命令行文件)本质:是一串指令的集合,与在命令窗本质:是一串指令的集合,与在命令窗口逐行执行文件中的所有指令,其结果是一口逐行执行文件中的所有指令,其结果是一样的。样的。将需要运行的命令编辑到一个命令文件将需要运行的命令编辑到一个命令文件中,然后在中,然后在MATLAB命令窗口直接输入该命命令窗口直接输入该命令文件的名字(执行方法)令文件的名字(执行方法),就会顺序执行,就会顺序执行命令文件中的命令,该文件称为命令文件中的命令,该

7、文件称为脚本文件脚本文件。(1)脚本文件中的命令格式和前后顺序,与)脚本文件中的命令格式和前后顺序,与在命令窗口中输入的指令无区别;在命令窗口中输入的指令无区别;(2)与在命令窗口中直接运行命令一样,脚)与在命令窗口中直接运行命令一样,脚本文件产生的变量都驻留在本文件产生的变量都驻留在MATLAB的的workspace中,可以方便查看变量;脚本文件中,可以方便查看变量;脚本文件可以直接访问可以直接访问workspace中的所有数据;中的所有数据;(3)文件的文件名要避免与)文件的文件名要避免与MATLAB内内置函数与工具箱中的函数重名,并要放在搜置函数与工具箱中的函数重名,并要放在搜索路径内。

8、索路径内。例例1:建立一个脚本文件,将变量:建立一个脚本文件,将变量a、b的值互换。的值互换。解:建立解:建立li1.m文件文件a=1:9;b=11 12 13;14 15 16;17 18 19;c=a;a=b;b=c;ab指令窗口执行该程序指令窗口执行该程序 li1a=11 12 13 14 15 16 17 18 19b=1 2 3 4 5 6 7 8 9二、二、M函数文件函数文件 函数文件函数文件(Function file)是另一种形式的是另一种形式的M文件,文件,每每一个函数文件都定义一个函数一个函数文件都定义一个函数。1.脚本文件和函数文件的区别:脚本文件和函数文件的区别:(1)

9、M脚本文件不需要输入任何参数,也不返回任何脚本文件不需要输入任何参数,也不返回任何参数,主要是为了解决在命令窗口中反复输入命令的繁参数,主要是为了解决在命令窗口中反复输入命令的繁琐操作;琐操作;M函数文件通常包含输入参数,也可以返回输函数文件通常包含输入参数,也可以返回输出参数,主要解决参数传递和函数调用的问题。出参数,主要解决参数传递和函数调用的问题。(2)脚本文件对)脚本文件对workspace中的变量进行操作;函数文中的变量进行操作;函数文件的变量为局域变量,只有其输出的变量保存在件的变量为局域变量,只有其输出的变量保存在workspace中。中。2.函数文件格式函数文件格式 funct

10、ion 输出形参表输出形参表=函数名(输入形参表)函数名(输入形参表)函数帮助信息行函数帮助信息行 函数体函数体是函数的功能实现部分是函数的功能实现部分 特定规则:特定规则:m函数文件第一行必须以单词函数文件第一行必须以单词function作为引导词;作为引导词;函数信息行:给出函数的帮助信息,帮助信息要函数信息行:给出函数的帮助信息,帮助信息要从从%开头,并放在一行的开头,在指令窗口中用开头,并放在一行的开头,在指令窗口中用help+文文件名可查询到;件名可查询到;函数名的命名规则与变量名相同;函数名的命名规则与变量名相同;m函数文件的函数文件的文文件名件名可以直接用可以直接用函数名函数名.

11、m,也可以与函数名不同,但,也可以与函数名不同,但是是调用时使用文件名调用时使用文件名;当函数的输出形参多于当函数的输出形参多于1个时,应用个时,应用方括号,参数之方括号,参数之间用逗号隔开:间用逗号隔开:function a,b=mfile(x,y);当函数无输出参;当函数无输出参数时,输出参数项应为空,或者用空的中括号表示:数时,输出参数项应为空,或者用空的中括号表示:function mfile(x,y)或者或者function =mfile(x,y);函数执行后,函数执行后,只保留最后的返回结果只保留最后的返回结果,不保留任何中间,不保留任何中间过程。程序中的变量均为过程。程序中的变量

12、均为局部变量局部变量,不保存在工作空间中,不保存在工作空间中,其变量只在函数运行期间有效,随函数调用的结束而从工其变量只在函数运行期间有效,随函数调用的结束而从工作空间消除。作空间消除。函数文件的一般结构1.函数声明行 函数声明行是在M函数文件的第一行,只有M函数文件必须有,以“function”引导并指定函数名、输入和输出参数,M脚本文件没有函数声明行。2.帮助文本3.程序代码 程序代码由MATLAB语句和注释语句构成。解:解:function li2%ab互换互换 a=1:9;b=11 12 13;14 15 16;17 18 19;c=a;a=b;b=c;a b例例2:建立一个函数文件,

13、将变量:建立一个函数文件,将变量a、b的值互换。的值互换。【例】编写函数文件求小于任意自然数n的Fibonacci数列各项。function f=ffib(n)%用于求Fibonacci数列的函数文件%f=ffib(n)%1999年9月30日编 f=1,1;i=1;while f(i)+f(i+1)10000,break;endend ii=141例:若最大值不为 10000,需修改程序例:前面的例子 function m,s=findsum(k)s=0;m=0;while(s m1,s1=findsum(145323)m1=539s1=145530 无需修改程序例例3:建立函数文件,将华氏温

14、度:建立函数文件,将华氏温度f转换为摄氏温度转换为摄氏温度c解:解:function c=f2c(f)c=5*(f-32)/9 f2c(100)c=37.7778 例例 编写函数文件求半径为编写函数文件求半径为r的圆的面积的圆的面积s和周长和周长p。函数文件如下:函数文件如下:function s,p=fcircle(r)%CIRCLE calculate the area and perimeter of a%circle of radii r%r 圆半径圆半径%s 圆面积圆面积%p 圆周长圆周长%2013年年10月月15日编日编s=pi*r*r;p=2*pi*r;5.2 MATLAB程序控

15、制结构程序控制结构5.2.1 条件分支结构条件分支结构条件分支结构条件分支结构根据一定条件来执行的各条语句。根据一定条件来执行的各条语句。1if语句语句 (1)单分支单分支if语句:语句:if 条件条件 语句组语句组 end 当条件成立时,则执行语句组,执行完之后继当条件成立时,则执行语句组,执行完之后继续执行续执行if语句的后继语句,若条件不成立,则直接语句的后继语句,若条件不成立,则直接执行执行if语句的后继语句。语句的后继语句。(2)双分支双分支if语句:语句:if 条件条件 语句组语句组1 else 语句组语句组2 end 当条件成立时,执行语句组当条件成立时,执行语句组1,否,否则执

16、行语句组则执行语句组2,语句组,语句组1或语句组或语句组2执执行后,再执行行后,再执行if语句的后继语句。语句的后继语句。(3)多分支多分支if语句:语句:if 条件条件1 语句组语句组1 elseif 条件条件2 语句组语句组2 elseif 条件条件m 语句组语句组m else 语句组语句组n end function y=shuru(x)if x=1 y=2*x.2+1 elseif(x-1)y=0 else y=-x.3 end2321 10 11 1xxyxxx 例例4:计算函数:计算函数y=例例5:编程判断一年是否是闰年:编程判断一年是否是闰年function leapyear(y

17、ear)%使用该程序判断是否是闰年使用该程序判断是否是闰年sign=0;if mod(year,4)=0 sign=0;elseif mod(year,400)=0 sign=1;elseif mod(year,100)=0 sign=0;else sign=1;endif sign=1 fprintf(%4d year is a leap year!n,year)else fprintf(%4d year is not a leap year!n,year)end执行结果:执行结果:leapyear(1904)1904 year is a leap year!leapyear(1900)19

18、00 year is not a leap year!111101122xxxxxx=-5:0.1:5;if x=1 y=x.2-1elseif-1x trangrade(97)ans=A trangrade(67)ans=D trangrade(55)ans=E根据变量 num 的值来决定显示的内容。num=input(请输入一个数);switch num case-1 disp(I am a teacher.);case 0 disp(I am a student.);case 1 disp(You are a teacher.);otherwise disp(You are a stud

19、ent.);end(一)选择结构5.2.2 循环结构循环结构1.while循环循环 while循环以不定的次数重复执行一组语句。循环以不定的次数重复执行一组语句。语法为:语法为:while 逻辑表达式逻辑表达式 循环体语句循环体语句 end while语句执行过程,只要表达式里面的所有元素为语句执行过程,只要表达式里面的所有元素为真,就执行真,就执行while和和end之间的语句,否则就结束循环。之间的语句,否则就结束循环。在设计在设计while循环时,循环时,应在循环体内有修改应在循环体内有修改“逻辑表逻辑表达式达式”的部分,的部分,确保执行了一定次数后可以退出循环。确保执行了一定次数后可以

20、退出循环。例例8:用:用while循环求循环求1100间整数的和间整数的和 sum=0;i=1;while i=100 sum=sum+i;i=i+1;end sum sum=5050例例9:编写函数文件求小于自然数:编写函数文件求小于自然数n的婓波纳契数列各的婓波纳契数列各项。该数列是一整数数列,其中每个数等于前面两数项。该数列是一整数数列,其中每个数等于前面两数之和。已知前两项为之和。已知前两项为1 1。function f=fbnq(n)%计算婓波纳契数列各项计算婓波纳契数列各项f=1 1;i=1;while f(i)+f(i+1)fbnq(30)ans=1 1 2 3 5 8 13 2

21、1例例10:按照下面的表达式计算,直至:按照下面的表达式计算,直至1/n!小于小于0.001。111111!2!3!en 建立脚本文件建立脚本文件ex10.merror=0.001;x=1;y=0;n=1;while xerror y=y+x;x=x/n;n=n+1;endy运行结果:运行结果:ex10y=2.71812.for循环循环 for循环允许一条或者一组语句被重复执行预先指循环允许一条或者一组语句被重复执行预先指定的次数。定的次数。for循环的语法为:循环的语法为:for 循环变量循环变量=表达式表达式1:表达式:表达式2:表达式:表达式3 循环体循环体 end循环次数循环次数:)(

22、步长步长初值初值终值终值 fix说明:说明:表达式表达式1的值为循环变量的初值,表达式的值为循环变量的初值,表达式2的值为的值为步长,表达式步长,表达式3的值为循环终值,当步长为的值为循环终值,当步长为1时,可以省时,可以省略。表达式的值可以是正整数、负整数或者小数。略。表达式的值可以是正整数、负整数或者小数。循环次数如何计算?循环次数如何计算?例例11:用:用for循环求循环求1100间整数的和间整数的和sum=0;for i=1:100 sum=sum+i;endsum例例12:使用:使用for循环计算循环计算 以及以及i!(i=1:10)的值。)的值。101!ii解:编写脚本文件解:编写

23、脚本文件forsum.msum=0;part=1;for i=1:10 part=part*i;fprintf(part(%d)=%dn,i,part)sum=sum+part;endfprintf(sum=%dn,sum)运行结果:运行结果:forsumpart(1)=1part(2)=2part(3)=6part(4)=24part(5)=120part(6)=720part(7)=5040part(8)=40320part(9)=362880part(10)=3628800sum=40379135.2.3 试探结构试探结构 试探式语句给用户提供了一种错误捕获机制,可试探式语句给用户提供了

24、一种错误捕获机制,可以将编译系统发现的错误捕获,控制对发生的错误进以将编译系统发现的错误捕获,控制对发生的错误进行处理。其格式为:行处理。其格式为:try 语句段语句段1 catch 语句段语句段2 end说明:说明:本语句结构首先试探性执行语句段本语句结构首先试探性执行语句段1,若发现错误,若发现错误,将错误信息赋给将错误信息赋给lasterr变量,并放弃执行语句段变量,并放弃执行语句段1,转,转而执行语句段而执行语句段2中的语句。中的语句。例例13:编写矩阵乘法计算,如有语法错误,给出错误信息:编写矩阵乘法计算,如有语法错误,给出错误信息X=magic(4);Y=ones(4,3);try

25、Z=X*Ycatchfprintf(not conformable.)endZ=34 34 34 34 34 34 34 34 34 34 34 34X=magic(4);Y=ones(3);tryZ=X*Ycatchfprintf(not conformable.n)endnot conformable.lasterrans=Error using=mtimesInner matrix dimensions must agree.5.2.4 人机交互命令人机交互命令1.break命令命令 break使用在循环语句中,一般通过使用在循环语句中,一般通过if语句来调用语句来调用break,从而使

26、系统跳出循环。,从而使系统跳出循环。%鸡兔同笼,头鸡兔同笼,头36,腿,腿100,问有鸡兔各几只,问有鸡兔各几只i=1;while 36-i0 if i*2+(36-i)*4=100 break;end i=i+1;endfprintf(The number of chickens is%dn,i);fprintf(The number of rabbits is%dn,36-i);2.continue命令命令 continue使用在循环语句中,作用是使用在循环语句中,作用是结束本次循环结束本次循环,即跳过循环体中下面尚未执行的语句,即跳过循环体中下面尚未执行的语句,接着执行下一次接着执行下一

27、次循环。循环。%请列出请列出110之间的奇数之间的奇数for i=1:10 if mod(i,2)=0 continue end fprintf(%4d,i);endfprintf(n);执行结果执行结果 continue_exam 1 3 5 7 93.input命令命令 提示用户从键盘输入数值、字符串和表达式,并接提示用户从键盘输入数值、字符串和表达式,并接受该输入。受该输入。调用格式:调用格式:A=input(提示信息,选项)(提示信息,选项)说明:说明:(1)A=input(statement):在指令窗口上显示):在指令窗口上显示statement,等待用户输入,并将数值赋给,等待用

28、户输入,并将数值赋给A;(2)A=input(statement,s):将输入作为字):将输入作为字符串,而不是数值赋给变量;符串,而不是数值赋给变量;(3)如果没有任何输入字符,而只按回车键,将返回)如果没有任何输入字符,而只按回车键,将返回一个空矩阵或者是单引号。一个空矩阵或者是单引号。例例14:计算一元二次方程:计算一元二次方程ax2+bx+c=0的根的根a=input(a=?n);b=input(b=?n);c=input(c=?);d=b2-4*a*c;x=(-b+sqrt(d)/(2*a)(-b-sqrt(d)/(2*a)执行结果:执行结果:input_exama=?1b=?2c=

29、?3x=-1.0000+1.4142i -1.0000-1.4142i4.disp命令命令 该命令的作用是命令窗口输出字符串或矩阵。该命令的作用是命令窗口输出字符串或矩阵。调用格式:调用格式:disp(输出项)(输出项)例例16:输入输入x,y的值,并将它们的值互换后输出。的值,并将它们的值互换后输出。程序如下:程序如下:x=input(Input x please:);y=input(Input y please:);disp(xy值互换值互换)z=x;x=y;y=z;disp(x);disp(y);5.error语句语句调用格式:调用格式:error(message)显示错误信息显示错误信

30、息message,并终止程序的运行并终止程序的运行。如果如果message是空(即是空(即error(),则),则error命令将不起作用。命令将不起作用。例例17:编写程序求解一元二次方程,如果根为复数,输:编写程序求解一元二次方程,如果根为复数,输出错误信息,并不输出计算结果。出错误信息,并不输出计算结果。function error_test(a,b,c)%解方程解方程a*x2+b*x+c=0d=b2-4*a*c;if d error_test(1,2,3)?Error using=error_testThe roots are complex!error_test(1,4,3)x=-1

31、 -38.warning语句语句 调用格式:调用格式:warning(message)显示警告信息,显示警告信息,它不会终止程序的运行它不会终止程序的运行,而仅给出,而仅给出警告信息。警告信息。9.return命令命令 return命令能够使当前函数正常退出。该语句常用命令能够使当前函数正常退出。该语句常用于函数的末尾,以正常结束函数的运行,也可以用于其于函数的末尾,以正常结束函数的运行,也可以用于其他地方,首先对特定条件判断,然后根据需要调用该命他地方,首先对特定条件判断,然后根据需要调用该命令使函数终令使函数终止止运行。运行。主函数和子函数主函数和子函数主函数和子函数的区别:主函数和子函数

32、的区别:(1)MATLAB允许一个允许一个M函数文件包含多个函数的代函数文件包含多个函数的代码,其中第一个出现的函数称为主函数,其余的函数码,其中第一个出现的函数称为主函数,其余的函数为子函数。为子函数。(2)保存时所用的函数名称与主函数定义名相同。)保存时所用的函数名称与主函数定义名相同。(3)主函数可以在)主函数可以在M文件外部调用,而子函数不行。文件外部调用,而子函数不行。(4)同一文件的主函数和子函数的工作空间是相互独)同一文件的主函数和子函数的工作空间是相互独立的。立的。例例18:编写一函数,要求输入任意两个数后,求出这:编写一函数,要求输入任意两个数后,求出这两数之和与绝对值之和的

33、积。两数之和与绝对值之和的积。function ch=sub(x,y)%主函数主函数ch=sub1(x,y)*sub2(x,y);function ch=sub1(x,y)%子函数子函数1ch=x+y;function ch=sub2(x,y)%子函数子函数2ch=abs(x)+abs(y);运行结果:运行结果:sub(4,3)ans=49 sub(4,-3)ans=7 MATLAB中,函数可以嵌套调用,即一个函数可以中,函数可以嵌套调用,即一个函数可以调用别的函数,甚至调用它自身。一个函数调用它自调用别的函数,甚至调用它自身。一个函数调用它自身称为函数的递归调用。身称为函数的递归调用。例例 利用函数的递归调用,求利用函数的递归调用,求n!。!。递归调用函数文件递归调用函数文件factor.m如下:如下:function f=factor(n)if n global A B A=1;B=2;f=global_exam(2,3)f=8

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(电气系统仿真课件5-程序设计.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|