Ch4MATLABd的M文件程序设计.ppt
《Ch4MATLABd的M文件程序设计.ppt》由会员分享,可在线阅读,更多相关《Ch4MATLABd的M文件程序设计.ppt(49页珍藏版)》请在冰豆网上搜索。
1,本章目标,掌握MATLAB的几种基本控制转移语句学会使用M文件进行编程具备对复杂问题的编程求解能力,2,主要内容,4.1程序设计概述4.2MATLAB程序结构4.3M文件,3,4.1程序设计概述,MATLAB是第四代编程语言
(1)程序简洁
(2)可读性很强(3)调试容易(4)编程效率高(5)易移植和维护通过编程可求解复杂性更高或特殊的问题,4,4.2MATLAB程序结构,按照程序设计的观点,任何算法功能都可以通过由程序模块组成的三种基本程序结构的组合来实现:
(1)顺序结构:
程序按程序语句或模块在执行流中的顺序逐个执行。
(2)选择结构:
程序按设定的条件实现程序执行流的多路分支。
(3)循环结构:
程序按给定的条件重复地执行指定的程序段或模块。
5,4.2.1顺序结构,程序模块1,程序模块2,MATLAB中实现顺序结构的方法非常简单:
只需将程序语句顺序排列即可,6,4.2.2选择结构,在MATLAB中,选择结构由两种语句结构实现:
(1)if语句
(2)switch语句,条件,程序模块1,成立,不成立,程序模块2,7,1.if语句,if表达式程序模块1else程序模块2end,不可缺少!
8,if语句的两种变形,
(1)单分支if语句:
只有一个分支的选择结构if表达式程序模块end,
(2)多分支if语句:
超过2个的选择if表达式1程序模块1elseif表达式2程序模块2elseif表达式n程序模块nelse程序模块n+1end,9,例:
将百分制的学生成绩转换为五级制的成绩输出,clearn=input(输入n=);ifn=90r=Aelseifn=80r=Belseifn=70r=Celseifn=60r=Delser=Eend,运行结果:
输入n=87r=B,10,2.switch语句,switch表达式case数值1程序模块1;case数值2程序模块2;otherwise程序模块nend,注意:
和C语言不同的是,在switch结构中,如果一个case条件满足,那么在执行完这个case组中的语句体之后,就会直接去执行end语句后面的语句,而不再判断其它case语句的情况。
11,例:
将百分制的学生成绩转换为五级制的成绩输出使用switch语句,clearn=input(输入n=);switchfix(n/10)case10,9r=Acase8r=Bcase7r=Ccase6r=Dotherwiser=Eend,运行结果:
输入n=65r=D,12,4.2.3循环结构,在MATLAB中,循环结构可以由两种语句结构实现:
(1)for语句循环结构
(2)while语句循环结构,程序模块,不成立,成立,条件,3.2.2选择结构,13,1for语句循环结构,for循环变量初值:
步长:
终值循环体end,说明:
初值、终值和步长可以是标量,也可以是表达式。
步长可以为正、负,也可省略不写,在这种情况下,默认的步长值为1。
14,例如:
使用for结构计算1+2+3+100,clearsum=0;fori=1:
100sum=sum+i;endsum,运行结果:
sum=5050,15,2while语句循环结构,while表达式循环体end,while语句一般用于事先不能确定循环次数的情况。
16,例:
使用while结构计算1+2+3+100,clearsum=0;i=0;whileisumi,运行结果:
sum=5050i=101,17,其他流程控制语句continue、break、return,1.continue用于for循环和while循环中跳过某些执行语句。
出现continue语句,则跳过循环体中所有剩余的语句,继续下一次循环;嵌套循环中出现continue语句,则执行本嵌套的下一次循环。
18,其他流程控制语句continue、break、return,1.continue,例如:
请思考下列程序及其运行结果,说明原因。
a=3;b=6;fori=1:
3b=b+1ifi2continueenda=a+2end,i=1时b=7i=2时b=8a=5i=3时b=9a=7,当if条件满足时,程序将不再执行continue后面的语句,而是开始下一次的循环。
19,其他流程控制语句continue、break、return,2.break用于终止for和while循环的执行。
出现break语句,则退出循环体;嵌套循环中出现break语句,则仅退出本次循环。
20,其他流程控制语句continue、break、return,2.break,例如:
请思考下列程序及其运行结果,说明原因。
a=3;b=6;fori=1:
3b=b+1ifi2breakenda=a+2end,i=1时b=7a=5i=2时b=8a=7i=3时b=9a不变,程序说明:
(1)当if条件不满足时,程序执行a=a+2。
(2)当if条件满足时,程序将执行break语句,跳出循环体。
21,其他流程控制语句continue、break、return,3.return用于终止当前函数的运行,返回到调用该函数的函数。
A=123;001;m,n=size(A);if(m=n)disp(MatrixAisasquare);returnelseif(m=n)disp(MatrixAisnotasquare);returnend,运行结果:
MatrixAisnotasquare,22,4.3M文件,MATLAB工作模式命令行方式。
程序文件驱动模式MATLAB文本编辑器,23,4.3M文件,所谓的M文件是由MATLAB语句(命令或函数)构成的ASCII码文本文件,文件名必须以“.m”为扩展名。
M文件有两种形式:
(1)命令文件
(2)函数文件,24,4.3.1命令文件,又称为脚本文件,是一串指令的集合。
用户只需键入该命令文件的文件名,系统就会自动逐行执行该文件中的各条语句。
不需要输入参数,也没有输出参数。
所处理变量为工作空间变量适用于小规模运算。
25,4.3.2函数文件,以function语句开始的M文件。
可以接受输入参数和返回输出参数。
所使用的变量为临时的局部变量,当运行完毕函数文件,其变量空间被释放。
26,4.3.2函数文件,函数文件基本格式:
function输出形参列表=函数名(输入形参列表)%注释说明语句段程序语句段,27,4.3.2函数文件,H1行:
帮助文本以“%”开始,用于介绍函数调用方法和函数功能,不能被MATLAB执行。
函数文件标志,函数体:
包含所有函数程序代码,是函数的主体部分。
28,命令文件与函数文件的区别P187,29,4.3.3局部变量和全局变量,1.局部变量只在本函数的工作区内有效,一旦退出该函数,即为无效变量。
在函数文件中定义及使用的变量都是局部变量2.全局变量在退出文件后仍为有效变量命令文件中定义或使用的变量都是全局变量,30,4.3.3局部变量和全局变量,global变量名定义一个变量为全局变量说明:
变量名区分大小写习惯上,globalABC%大写字母为全局变量,31,4.3.3局部变量和全局变量,1.先建立函数文件wadd.m,该函数将输入的参数加权相加。
functionf=wadd(x,y)globalABf=A*x+B*y;,例如:
全局变量应用示例。
2.然后保存文件名为“wadd.m”,3.在命令窗口中输入:
globalABA=1;B=2;s=wadd(1,2),32,4.3.4数据及数据文件,1.MATLAB提供六种基本的数据类型,
(1)双精度型(double):
A=5,(或-3.6,12;34,2-3i)
(2)字符型(char):
B=hi,(或3+4i)(3)稀疏矩阵(sparse):
只存储矩阵中的非0元素(4)单元数组型(cell):
数组中的每个元素可以是其他任何一种数据类型,可将尺寸大小不同的数组组合在一起。
D=1,good,1,2,3(5)结构数组型(struct):
E.color=red;E.mat=magic(3)(6)8位型(uint8):
8位无符号整数数组,最大可表示255,不能用于数学运算,用于内存存储变量。
一.数据类型,33,2.MATLAB6.0中还有如下数据类型:
(1)8位符号整型(int8):
-128+127
(2)16位符号整型(int16):
-32768+32767(3)16位无符号整型(uint16):
065535(4)32位符号整型(int32):
-2147483648+2147483647(5)32位无符号整型(uint32):
04294967295,4.3.4数据及数据文件,34,上述所有数据类型中:
(1)最常使用的是双精度型和符号型MATLAB提供的绝大部分函数都是对双精度型矩阵或符号型矩阵进行操作。
(2)其他几种数据类型用于特殊的场合,uint8、uint16、uint32:
用于图象处理、内存存储稀疏型:
用于稀疏矩阵的存储单元型和结构型:
用于编写大型软件,4.3.4数据及数据文件,35,二.数据文件,1.以.mat为扩展名的二进制数据文件2.以.txt.dat为扩展名的ASCII码数据文件3.以.bmp、.jpg为扩展名的图象数据文件4.以.wav为扩展名的声音数据文件,4.3.4数据及数据文件,36,三.数据输入向导(ImportWizard),用于将各种类型的数据文件中的数据导入工作空间,可以是.mat、.txt、.bmp、.wav等。
FileImportData,选择该项后弹出Import对话框,在对话框中输入需要导入的数据文件名(*.mat、*.txt、*.bmp、*.wav),打开文件可以显示数据输入向导窗口。
操作步骤:
4.3.4数据及数据文件,37,四.数据的输入与输出,1.save将工作空间中的变量进行保存。
说明:
.mat格式存储数据,可保存当前工作空间中的各种变量;.dat格式存储数据,只能保存数值型变量。
4.3.4数据及数据文件,38,load:
将matlab.mat的内容读入内存。
loaddfile:
将dfile.mat的内容读入内存。
loaddfile.dat:
将dfile.datASCII文件读入内存。
4.3.4数据及数据文件,四.数据的输入与输出2.load将磁盘文件中保存的数据调入工作空间。
39,4.4M文本编辑器,利用MATLAB编程语言所编写的程序被称作M文件,后缀形式是“.m”。
可以利用任何的文本编辑器来建立、编辑和修改,只要使文件的后缀为“.m”即可。
MATLAB还提供了一个内置的编辑器,40,4.4M文本编辑器,MATLAB文本编辑器是一个集编辑与调试两种功能于一体的工具环境,利用它不仅可以完成基本的文本编辑操作,还可以对M文件进行调试。
启动编辑器的方法,edit或editaverage单击“新建”命令图标。
单击File-New-M-file,41,4.4M文本编辑器,打开已有M文件的三种操作方法,editfilename%filename是待打开文件名,可不带扩展名。
单击MATLAB命令窗口工具栏上的图标,再从弹出的对话框中选择需打开的文件。
单击File-Open,再从弹出对话框中选择需打开的文件。
42,4.4M文本编辑器,3.程序调试方法,
(1)直接调试法检查所调用的函数或命令的拼写是否正确,括号是否配对,各种流程控制语句是否匹配。
检查所调用的函数或M文件是否在当前目录或搜索路径中。
(2)调试器的使用STEP1:
File-New-M-File打开编辑窗口STEP2:
DebugRun开始运行程序,当出现错误时,运行自动停止,在命令窗口根据错误信息找到相应的程序位置。
也可用鼠标点击命令窗口中出现的带有下划线的错