matlab基础 matlab程序设计_第1页
matlab基础 matlab程序设计_第2页
matlab基础 matlab程序设计_第3页
matlab基础 matlab程序设计_第4页
matlab基础 matlab程序设计_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1第第5讲讲 matlab程序设计程序设计尚涛,电子信息工程学院尚涛,电子信息工程学院tel:010-823172222本讲目标l 掌握matlab的几种基本控制转移语句l学会使用m文件进行编程l具备对复杂问题的编程求解能力3主要内容l程序设计概述程序设计概述lmatlab程序结构程序结构lm文件文件l调试调试4.1 程序设计概述lmatlab是第四代编程语言是第四代编程语言l程序简洁l可读性很强l调试容易l编程效率高l易移植和维护 l通过编程可求解复杂性更高或特殊的计算问题通过编程可求解复杂性更高或特殊的计算问题第一代 机器语言 特征:面向机器。 第二代 汇编语言 特征:用指令符号代替二进制

2、代码 第三代 c、c+、pascal等 特征:面向过程 第四代 java,c#等 特征:面向对象5l与其他高级语言相比与其他高级语言相比具有语法相对简单、使用方便、容易调试等优具有语法相对简单、使用方便、容易调试等优点点l在编程工作方式下,要求具有在编程工作方式下,要求具有l数据结构l控制流l输入输出l面向对象6l编制一种扩展名为编制一种扩展名为.m的的matlab程序程序(简称简称m文件文件)l编辑环境编辑环境7.2 matlab程序结构l按照程序设计的观点按照程序设计的观点, 任何算法功能都可以通过任何算法功能都可以通过由程序模块组成的三种基本流程控制结构的组由程序模块组成的三种基本流程控

3、制结构的组合来实现合来实现: l顺序结构:程序按程序语句或模块在执行流中的顺序逐个执行。 l分支结构:程序按设定的条件实现程序执行流的多路分支。 l循环结构:程序按给定的条件重复地执行指定的程序段或模块。85.2.1顺序结构程序程序模块模块1 1程序模块程序模块2 2lmatlab中实现顺序结构的方法非常简单:中实现顺序结构的方法非常简单:l只需将程序语句顺序排列即可 9example.m文件文件theta=-pi:0.01:pi;rho(1,:)=2*sin(5*theta).2;polar(theta,rho(1,:)执行执行example105.2.2 分支结构l在在matlab中,选择

4、结构由中,选择结构由两种语句结构实现:两种语句结构实现:lif语句lswitch语句条件条件程序模块程序模块1成立成立不成立不成立程序模块程序模块23.2.2 选择结构11if语句if表达式表达式 程序模块程序模块1 else 程序模块程序模块2end12if语句的两种变形l(1) 单分支单分支if语句:只有一个分支的选择结构语句:只有一个分支的选择结构 if表达式 程序模块endl(2) 多分支多分支if语句:超过语句:超过2个的选择个的选择if表达式1 程序模块1 elseif 表达式2 程序模块2 elseif 表达式n 程序模块n else 程序模块n+1end13例:将百分制的学生成

5、绩转换为五级制的成绩输出clearn=input(输入输入n= ); if n=90 r=aelseif n=80 r=belseif n=70 r=celseif n=60 r=delse r=eend运行结果:运行结果:输入n= 87r =b14switch语句 switch 表达式表达式 case 数值数值1 程序模块程序模块1; case 数值数值2 程序模块程序模块2;otherwise 程序模块程序模块n end15例:将百分制的学生成绩转换为五级制的成绩输出使用switch语句 clearn=input(输入输入n= ); switch fix(n/10) %fix 取整取整 c

6、ase 10,9 r=a case 8 r=b case 7 r=c case 6 r=d otherwise r=eend运行结果:运行结果:输入n= 65r =d165.2.3 循环结构l在在matlab中,循环结构可中,循环结构可以由两种语句结构实现:以由两种语句结构实现:lfor语句循环结构lwhile语句循环结构程序模块程序模块不成立不成立成立成立条件条件3.2.2 选择结构17for语句循环结构语句循环结构for循环变量起始值:步长:终止值循环变量起始值:步长:终止值循环体循环体end18例:使用for结构计算1+2+3+100clearsum=0;for i=1:100 sum=

7、sum+i;endsum运行结果:运行结果:sum = 505019while语句循环结构语句循环结构 while表达式表达式 循环体循环体end20例:使用while结构计算1+2+3+100clearsum=0; i=0;while i100i=i+1;sum=sum+i;endsum运行结果:运行结果:sum = 5050215.3 m文件文件m文件两种形式文件两种形式l命令文件(命令文件(script)l命令和函数的结合l文件运行不需要输入参数和输出参数l按顺序自动执行命令l函数文件(函数文件(function)l用function声明l可以包含输入参数和输出参数l文件运行须给出输入参

8、数自动化模块化225.3.1基本组成结构说明定义变量 %包括全局变量的声明及参数值的设定包括全局变量的声明及参数值的设定逐行执行命令 %指指matlab提供的运算指令或工具箱提供的专用命令提供的运算指令或工具箱提供的专用命令 /分支/循环 %包含包含for,if then,switch,while等语句等语句 逐行执行命令 end %表示结束表示结束,可以没有可以没有 235.3.2 m文件的编辑及工作路径的设置l进入进入matlab的的editor/debugger窗口来编辑程序窗口来编辑程序l在编辑环境中,文字的不同颜色显示表明不同属性在编辑环境中,文字的不同颜色显示表明不同属性 绿色:注

9、解; 黑色:程序主体; 红色:属性值的设定; 蓝色:控制流程。l在运行程序之前,必须设置好在运行程序之前,必须设置好matlab的工作路径。的工作路径。通过通过cd指令在命令窗口中可以更改、显示当前工作路径。指令在命令窗口中可以更改、显示当前工作路径。l通过路径浏览器(通过路径浏览器(path browser)可以进行设置)可以进行设置24255.3.3命令文件命令文件l又称为脚本文件,是一串指令的集合。又称为脚本文件,是一串指令的集合。l用户只需键入该命令文件的文件名,系统就会用户只需键入该命令文件的文件名,系统就会自动逐行执行该文件中的各条语句。自动逐行执行该文件中的各条语句。l适用于小规

10、模运算。适用于小规模运算。265.3.4函数文件函数文件l函数文件基本格式:函数文件基本格式:function 输出形参列表=函数名(输入形参列表) 注释说明语句段 程序语句段end27函数内容:(1)第一行帮助行,即)第一行帮助行,即h1行行 以(以(%)开头,作为)开头,作为lookfor指令搜索的行指令搜索的行(2)函数体说明及有关注解)函数体说明及有关注解 以(以(%)开头,用以说明函数的作用及有关内容。)开头,用以说明函数的作用及有关内容。如果不希望显示某段信息,可在它的前面加空行如果不希望显示某段信息,可在它的前面加空行(3)函数体语句)函数体语句 函数体内使用的除返回和输入变量这

11、些在函数体内使用的除返回和输入变量这些在function语句中直接引用的变量以外的所有变量都是语句中直接引用的变量以外的所有变量都是局部局部变量变量,即在该函数返回之后,这些变量会自动在,即在该函数返回之后,这些变量会自动在matlab的工作空间中清除掉。的工作空间中清除掉。28函数文件29函数程序使用的变量 函数程序与主程序之间的数据是通过参数进行传递的,函数程序应用主程序传递来的参数进行计算后,将结果返回主程序。30%主程序exp2_9.ma=input(please input value of a=);b=input(please input value of b=);c=sumhe(

12、a,b)% 在此例中,主程序exp2_9.m设定了两个参数a和b来调用% 子程序sumhe.m(为一个函数文件),% 所以执行主程序时,子程序就会调用主程序传递过来的% a和b值进行计算,再将结果返回主程序。%子程序sumhe.m%sumhe(a,b) sum the serial of numbers from a tob function result=sumhe(a,b)result=a+b;end315.4局部变量和全局变量 如果一个函数内的变量没有特别声明,那么这如果一个函数内的变量没有特别声明,那么这个变量只在函数内部使用,即为个变量只在函数内部使用,即为局部变量局部变量。如果两个

13、或多个函数共用一个变量(或者说在如果两个或多个函数共用一个变量(或者说在函数程序中也要用到主程序中的变量,注意不函数程序中也要用到主程序中的变量,注意不是参数),那么可以用是参数),那么可以用global来将它声明为来将它声明为全局全局变量变量。 全局变量的使用可以减少参数传递,合理利用全局变量的使用可以减少参数传递,合理利用全局变量可以提高程序执行的效率。全局变量可以提高程序执行的效率。32%主程序exp2_10.mglobal a %声明变量a为全局变量x=1:100;a=3;c=prods(x) %调用子程序prods.m%子程序prods.mfunction result=prods(

14、x)global a result=a*sum(x);%声明了与主程序一样的全局变量a,以便在子程序中可以%使用主程序中定义的变量335. 5 人机交互l人机交互命令人机交互命令echo on(off) 执行命令前先显示其内容执行命令前先显示其内容pause(n) 程序执行到此处,暂停程序执行到此处,暂停n秒,或键入任意键后才继续执行秒,或键入任意键后才继续执行keyboard 程序执行到此处暂停,屏幕显示程序执行到此处暂停,屏幕显示k,用户可以做任何操作,用户可以做任何操作,需恢复运行时,键入需恢复运行时,键入returninput(提示符提示符) 程序执行到此处暂停,屏幕显示引号中的字符串

15、,要求用户程序执行到此处暂停,屏幕显示引号中的字符串,要求用户输入数据输入数据c 强行停止程序运行强行停止程序运行345.6 m文件调试l两种类型的错误两种类型的错误l语法错误:由用户的错误操作引起的l运行错误:算法错误和程序设计错误引起的35编辑器的编辑与调试363738扩展阅读l其他流程控制语句其他流程控制语句l1. break语句l2. continue语句l3. return语句l4. try语句l5. echo命令l6. input命令l7. keyboard命令l8. pause命令lgui程序设计程序设计(图形用户界面图形用户界面)lmatlab应用程序接口应用程序接口(api)

16、 l提供库函数提供库函数l与与c或或fortran语言混合编程语言混合编程39其他章节其他章节lsimulink系统建模仿真分析的软件包系统建模仿真分析的软件包l线性和非线性系统l连续和离散时间系统l图像、视频、声音的处理lmatlab的综合应用的综合应用l电路l电力系统l信号与系统l数字信号处理l图像处理40 本节介绍了本节介绍了matlab程序设计基础知识程序设计基础知识,通过学习应该掌握:,通过学习应该掌握:m文件的编写方法m文件的调试方法小小 结结41上机指导lm文件的调试文件的调试42task(1)l使用使用m文件编辑函数文件。文件编辑函数文件。43task(2)l求求1!+2!+3!+ +5!的值!的值clearsum=0;for i=1:5 pdr=1; for k=1:i pdr=pdr*k; end sum=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论