《第3章MATLAB程序设计1》由会员分享,可在线阅读,更多相关《第3章MATLAB程序设计1(32页珍藏版)》请在金锄头文库上搜索。
1、Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_第三章第三章 MATLAB程序设计程序设计3.1 M文件编辑器文件编辑器3.2 M文件类型与运行机理文件类型与运行机理3.3 MATLAB程序控制流程序控制流3.4 函数类型与使用方法函数类型与使用方法3.5 数数据据I/O与文件操作与文件操作3.6 程序调试与性能优化程序调试与性能优化Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.1 M文件编辑器文件编辑器M文件编辑
2、器的启动:文件编辑器的启动:F在在MATLAB指令窗运行命令指令窗运行命令editF点击点击MATLAB工具栏上的工具栏上的“新建新建”图标图标F在在MATLAB菜单中选择菜单中选择FileNew“M-file”打开已经存在的打开已经存在的M文件:文件:F在在MATLAB指令窗运行命令指令窗运行命令edit filenameF点击点击MATLAB工具栏上的工具栏上的“打开打开”图标图标F在在MATLAB菜单中选择菜单中选择FileOpen编辑编辑M文件:文件:FM文件是文本文件,后缀名必须是文件是文本文件,后缀名必须是.mFM文件可以用任何文本编辑工具创建和编辑文件可以用任何文本编辑工具创建和
3、编辑F文本编辑工具最好具有语法检测功能文本编辑工具最好具有语法检测功能Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.2 M文件类型与运行机制文件类型与运行机制3.2.1 M脚本文件脚本文件FM脚本文件只是一串按用户意图排列而成的(包括脚本文件只是一串按用户意图排列而成的(包括控制流向指令在内的)控制流向指令在内的)MATLAB指令集合指令集合F脚本文件运行后,所产生的所有变量都驻留在脚本文件运行后,所产生的所有变量都驻留在MATLAB基本工作空间中基本工作空间中F只要用户不使用只要用户不使用clear
4、指令加以清除,且指令加以清除,且MATLAB指令窗口不关闭,这些变量将一直保存在基本工作指令窗口不关闭,这些变量将一直保存在基本工作空间空间F基本工作空间随基本工作空间随MATLAB的启动而产生,只有关闭的启动而产生,只有关闭MATLAB,该基本空间才能被删除,该基本空间才能被删除F脚本文件不允许有输入参数和输出参数脚本文件不允许有输入参数和输出参数Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.2 M文件类型与运行机制文件类型与运行机制3.2.2 M函数文件函数文件FM函数文件的第一行是以函数文件的第
5、一行是以function引导的函数声明行,该行还引导的函数声明行,该行还罗列函数与外界联系的全部输入输出参数罗列函数与外界联系的全部输入输出参数F每当函数文件运行时,每当函数文件运行时,MATLAB就专门为它开辟一个临时的就专门为它开辟一个临时的函数工作空间,所有中间变量都存放在函数工作空间中函数工作空间,所有中间变量都存放在函数工作空间中F当执行完文件最后一条指令时,或遇到当执行完文件最后一条指令时,或遇到return,就结束该函数,就结束该函数文件的运行,同时该临时函数空间及其所有的中间变量就立文件的运行,同时该临时函数空间及其所有的中间变量就立即被删除即被删除F函数空间随具体函数空间随具
6、体M函数文件的被调用而产生,随调用结束而删函数文件的被调用而产生,随调用结束而删除除F函数空间相对基本空间是独立的、临时的,在函数空间相对基本空间是独立的、临时的,在MATLAB整个整个运行期间,可以产生任意多个临时函数空间运行期间,可以产生任意多个临时函数空间F如果在函数文件中发生对某脚本文件的调用,那么该脚本文如果在函数文件中发生对某脚本文件的调用,那么该脚本文件运行产生的所有变量都存放于函数空间,而不存放在基本件运行产生的所有变量都存放于函数空间,而不存放在基本空间空间F如果从组成程序结构的角度来看,如果从组成程序结构的角度来看,M函数文件仅比函数文件仅比M脚本文件脚本文件多出一个函数声
7、明行,其它部分完全一样多出一个函数声明行,其它部分完全一样Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.2 M文件类型与运行机制文件类型与运行机制3.2.3 M函数文件的一般结构函数文件的一般结构F函数声明行函数声明行:位于函数文件首行,以关键字:位于函数文件首行,以关键字function开头,函数名以开头,函数名以及函数的输入输出参数都在这一行定义及函数的输入输出参数都在这一行定义l函数文件名字必须以字母开头,后面可以是字母、下划线以及数字函数文件名字必须以字母开头,后面可以是字母、下划线以及数字的
8、任意组合,但不得超过的任意组合,但不得超过31个字符个字符l函数定义名与保存文件名一致;如果两者不一致,函数定义名与保存文件名一致;如果两者不一致,MATLAB将忽视将忽视文件首行的函数定义名,而以保存文件名为准文件首行的函数定义名,而以保存文件名为准FH1行行:紧随函数声明行之后以开头的第一注释行,包含:大写体:紧随函数声明行之后以开头的第一注释行,包含:大写体函数文件名和运用关键词简要描述的函数功能,供函数文件名和运用关键词简要描述的函数功能,供lookfor关键词查关键词查询和询和help在线帮助使用在线帮助使用lH1行最好用英文表达,便于关键词检索行最好用英文表达,便于关键词检索F在线
9、帮助文本区在线帮助文本区:H1行及其之后连续以开头的所有注释行构成,行及其之后连续以开头的所有注释行构成,通常包括函数输入输出参数的含义和调用格式说明通常包括函数输入输出参数的含义和调用格式说明F编写和修改记录编写和修改记录:与在线帮助文本区相隔一个空行,也以开头;:与在线帮助文本区相隔一个空行,也以开头;标志编写及修改该标志编写及修改该M文件的作者和日期以及版本记录,用来做软件档文件的作者和日期以及版本记录,用来做软件档案管理案管理F函数体函数体:由实现该:由实现该M函数文件功能的指令组成函数文件功能的指令组成F注释注释:以开头,在函数体中对实现函数功能的关键部分作出说明:以开头,在函数体中
10、对实现函数功能的关键部分作出说明l若仅从运算角度看,只有若仅从运算角度看,只有“函数声明行函数声明行”和和“函数体函数体”两部分是构两部分是构成成M函数文件必不可少的函数文件必不可少的Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.2 M文件类型与运行机制文件类型与运行机制3.2.4 局部变量和全局变量局部变量和全局变量F局部变量(局部变量(Local variable)存在于函数空间内部的中间变量存在于函数空间内部的中间变量产生于该函数的运行过程中产生于该函数的运行过程中其影响范围仅限于该函数本身其影
11、响范围仅限于该函数本身F全局变量(全局变量(Global variable)不同的函数空间以及基本工作空间共享的变量不同的函数空间以及基本工作空间共享的变量每个希望共享变量的空间都必须用每个希望共享变量的空间都必须用global声明全局变量声明全局变量没采用没采用global定义的空间无权享用全局变量定义的空间无权享用全局变量如果某个空间的操作使全局变量的内容发生变化,那么其他如果某个空间的操作使全局变量的内容发生变化,那么其他空间中的同名变量也随之变化空间中的同名变量也随之变化除非与全局变量联系的所有空间都被删除,否则全局变量依除非与全局变量联系的所有空间都被删除,否则全局变量依然存在然存在
12、对全局变量的定义必须在该变量被使用之前进行对全局变量的定义必须在该变量被使用之前进行为了提高为了提高M文件的可读性,建议用大写字母命名全局变量文件的可读性,建议用大写字母命名全局变量由于全局变量损害函数的封装性,因此不提倡使用全局变量由于全局变量损害函数的封装性,因此不提倡使用全局变量Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.2 M文件类型与运行机制文件类型与运行机制3.2.5 P码文件码文件F语法分析过程和伪代码语法分析过程和伪代码一个一个M文件首次被调用时,文件首次被调用时,MATLAB首先对
13、该首先对该M文件进行文件进行语法分析,并把生成的相应内部伪代码文件存放在内存中语法分析,并把生成的相应内部伪代码文件存放在内存中再次调用该再次调用该M文件时,将直接调用该文件在内存中的文件时,将直接调用该文件在内存中的P码码文件,而不会对原码文件重复进行语法分析文件,而不会对原码文件重复进行语法分析P码文件与原码文件有相同的文件名,但扩展名是码文件与原码文件有相同的文件名,但扩展名是.pP码文件运行速度高于原码文件码文件运行速度高于原码文件如果存在同名的如果存在同名的P码和原码文件,那么当该文件名被调用码和原码文件,那么当该文件名被调用时,被执行的肯定是时,被执行的肯定是P码文件码文件FP码文
14、件的预生成码文件的预生成pcode FunName:在当前目录上生成:在当前目录上生成FunName.ppcode FunName inplace:在:在FunName.m所在目录上所在目录上生成生成FunName.pTel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.2 M文件类型与运行机制文件类型与运行机制3.2.6 MATLAB的搜索过程的搜索过程F如果如果MATLAB在一个文件中遇到指令在一个文件中遇到指令cow其搜索过程如下:其搜索过程如下:检查检查cow是否为一个变量名;如果不是,执行下一步是否
15、为一个变量名;如果不是,执行下一步检查检查cow是否内建函数;假如不是,执行下一步是否内建函数;假如不是,执行下一步检查检查cow是不是是不是cow所在的所在的M文件中的一个子函数;如果文件中的一个子函数;如果不是,再往下执行不是,再往下执行检查检查cow是不是是不是cow所在的所在的M文件中的一个私有函数;假文件中的一个私有函数;假如不是,再往下执行如不是,再往下执行检查检查cow是不是当前目录上的文件;假如不是,再往下是不是当前目录上的文件;假如不是,再往下执行执行检查搜索路径上是否有检查搜索路径上是否有cow存在存在FMATLAB将使用最先找到的那个将使用最先找到的那个cowF如果一直找
16、不到如果一直找不到cow,MATLAB就给出错误信息就给出错误信息Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.3 MATLAB程序控制流程序控制流3.3.1 for循环控制结构循环控制结构F格式:格式:F说明:说明:x:循环变量,依次取:循环变量,依次取array各列各列commands:循环体:循环体重复执行次数由重复执行次数由array的列数决定的列数决定for循环结构可以嵌套循环结构可以嵌套array可以是任何合法的可以是任何合法的MATLAB数组数组l循环不会因为在循环体内对循环变量重新设置
17、新值而中断循环不会因为在循环体内对循环变量重新设置新值而中断l为了得到高效代码,应尽量提高代码的向量化程度,而避为了得到高效代码,应尽量提高代码的向量化程度,而避免使用循环结构免使用循环结构l为了得到高效代码,在循环指令之前应尽量对数组进行预为了得到高效代码,在循环指令之前应尽量对数组进行预定义定义for xarray (commands)endTel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.3 MATLAB程序控制流程序控制流3.3.2 while循环结构循环结构F格式:格式:F说明:说明:comma
18、nds:循环体:循环体首先检测首先检测expression的值,如其为逻辑真,则的值,如其为逻辑真,则执行循环体内的命令,直到执行循环体内的命令,直到expression的值为的值为逻辑假时退出循环逻辑假时退出循环如果如果expression的值是数组,则只有在数组中的值是数组,则只有在数组中所有元素均为真时才执行循环体所有元素均为真时才执行循环体lwhile循环与循环与for循环的区别是执行循环体的次数循环的区别是执行循环体的次数能否预先确定能否预先确定l如果如果expression的值为空数组,则的值为空数组,则MATLAB认认为表达式值为假,而不执行循环体为表达式值为假,而不执行循环体w
19、hile expression (commands)endTel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.3 MATLAB程序控制流程序控制流3.3.3 ifelseend分支结构分支结构F格式:格式:一种选择一种选择两种选择两种选择多种选择多种选择F说明说明表达式有时由多个逻辑子表达式组成,表达式有时由多个逻辑子表达式组成,MATLAB将尽可能少地检测这些子表达式的值将尽可能少地检测这些子表达式的值if指令判决和指令判决和break指令的配合使用,可以强制指令的配合使用,可以强制终止终止for循环和循
20、环和while循环循环if expression (commands)endif expression (commands)else (commands)endif expression1 (commands)elseif expression2 (commands)else (commands)endTel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.3 MATLAB程序控制流程序控制流3.3.4 switch-case结构结构F格式:格式:F说明:说明:ex应为标量或字符串应为标量或字符串检测值检测值t
21、estk类型可以是标量或类型可以是标量或字符串,也可以是元胞数组字符串,也可以是元胞数组与与C语言不同,在执行完每个语言不同,在执行完每个case块后,块后,MATLAB会自动跳会自动跳出出switch结构,无需使用结构,无需使用break指令指令switch ex case test1 (commands) case test2 case testk (commands) otherwise (commands)endTel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.3 MATLAB程序控制流程序控制流
22、3.3.5 try-catch结构结构F格式格式F说明:说明:只有当执行命令组只有当执行命令组1出现错误后,出现错误后,命令组命令组2才会被执行才会被执行可调用可调用lasterr函数查询出错原因函数查询出错原因如果如果lasterr的运行结果是一个空串,的运行结果是一个空串,则表明命令组则表明命令组1被成功执行被成功执行当执行命令组当执行命令组2时又出错,时又出错,MATLAB将终止该结构将终止该结构try (commands1)catch (commands2)endTel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Emai
23、l:zuo_3.3 MATLAB程序控制流程序控制流3.3.6 其它常用指令其它常用指令F1.return:强制结束执行函数并把控制转出:强制结束执行函数并把控制转出F2.input:将控制权:将控制权“暂时暂时”交给用户交给用户v=input(message):将用户键入内容赋给:将用户键入内容赋给vv=input(message,s):将用户键入内容作为字符串赋给:将用户键入内容作为字符串赋给vF3.keyboard:将控制权交给键盘:将控制权交给键盘用户可以输入各种合法指令用户可以输入各种合法指令用户输入用户输入return指令后控制权交还给程序指令后控制权交还给程序F4.v=yesin
24、put(Prompt,Default,Possib)F5.pause:暂停执行文件,等待用户按任意键继续:暂停执行文件,等待用户按任意键继续F6.break:使包含该指令的:使包含该指令的while、for循环终止循环终止F7.continue:结束当前循环,开始下一次循环:结束当前循环,开始下一次循环F8.error和和warning指令:指令:error(message):显示出错信息,终止程序:显示出错信息,终止程序warning(message):显示警告信息,程序继续运行:显示警告信息,程序继续运行errortrap:错误发生后,程序继续执行与否的双位开关:错误发生后,程序继续执行与
25、否的双位开关Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.4 函数类型与使用方法函数类型与使用方法3.4.1 输入输出参数检测输入输出参数检测F检测指令:检测指令:nargin:在函数体内,用于获取实际输入参数数目:在函数体内,用于获取实际输入参数数目nargout:在函数体内,用于获取实际输出参数数目:在函数体内,用于获取实际输出参数数目nargin(fun):获取:获取fun指定函数的标称输入参数数目指定函数的标称输入参数数目nargin(fun):获取:获取fun指定函数的标称输出参数数目指定函
26、数的标称输出参数数目inputname(n):在函数体内使用,给出第:在函数体内使用,给出第n个输入参数的个输入参数的实际调用变量名实际调用变量名F说明:说明:在函数体内使用在函数体内使用nargin、nargout的目的是与程序流控制的目的是与程序流控制指令配合,对于不同数目的输入输出参数,函数可以完成指令配合,对于不同数目的输入输出参数,函数可以完成不同的任务不同的任务nargin、nargout、inputname本身都是函数,而不是变本身都是函数,而不是变量,因此用户不能使用赋值指令对它们进行处理量,因此用户不能使用赋值指令对它们进行处理Tel:63292873QQ:641296082
27、Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.4 函数类型与使用方法函数类型与使用方法3.4.2 变长度输入输出参数变长度输入输出参数F格式格式Fvarargin:变长度输入参数列表:变长度输入参数列表Fvarargout:变长度输出参数列表:变长度输出参数列表F变长度参数必须放在普通参数之后变长度参数必须放在普通参数之后Fvarargin、varargout本身都是元胞数组,编写本身都是元胞数组,编写M函函数文件时,它们每个元胞应当作一个普通输入参数数文件时,它们每个元胞应当作一个普通输入参数处理处理FM函数文件被调用时,函数输入变量首先依先后次
28、函数文件被调用时,函数输入变量首先依先后次序逐个对应分配给输入参数列表中那些被明确定义序逐个对应分配给输入参数列表中那些被明确定义的普通输入参数,然后把剩余的输入变量依次逐个的普通输入参数,然后把剩余的输入变量依次逐个分配到分配到varargin元胞数组的元胞中,因此元胞数组的元胞中,因此varargin元胞数组的长度取决于分配到的输入变量数元胞数组的长度取决于分配到的输入变量数Fvarargout的工作机理、规则与的工作机理、规则与varargin相同相同function outputs,varargout=funname(inputs,varargin)Tel:63292873QQ:641
29、296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.4 函数类型与使用方法函数类型与使用方法3.4.3 跨空间变量传递跨空间变量传递F跨空间计算串表达式的值跨空间计算串表达式的值evalin(ws,ex):跨空间计算串表达式值:跨空间计算串表达式值lws可取两个值:可取两个值:base和和callerl当当ws取取base时,从基本工作空间获得变量值时,从基本工作空间获得变量值l当当ws取取caller时,从主调函数工作空间获得变量时,从主调函数工作空间获得变量值值evalin(ws,ex1,ex2):跨空间计算替代串表达式值:跨空间计算替代
30、串表达式值l先从所在函数空间获取变量值,用先从所在函数空间获取变量值,用eval(exp1)计算原串计算原串表达式;若该计算失败,再从表达式;若该计算失败,再从ws指定的工作空间获取指定的工作空间获取变量值,再通过变量值,再通过eval(ex2)计算替代串表达式计算替代串表达式F跨空间赋值跨空间赋值assign(ws,VN,x):跨空间向变量:跨空间向变量VN赋值赋值Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.4 函数类型与使用方法函数类型与使用方法3.4.4 主函数和子函数主函数和子函数F主函数和
31、子函数的定义:主函数和子函数的定义:MATLAB允许一个允许一个M函数文件包含多个函数代码,其中第函数文件包含多个函数代码,其中第一个出现的函数称为主函数,该文件中的其他函数称为子一个出现的函数称为主函数,该文件中的其他函数称为子函数。函数。保存时所用函数文件名与主函数文件名相同。保存时所用函数文件名与主函数文件名相同。外部程序只能对主函数进行调用外部程序只能对主函数进行调用F子函数的性质子函数的性质在在M函数文件中,主函数的位置不可改变,但子函数的排函数文件中,主函数的位置不可改变,但子函数的排列次序可以任意改变列次序可以任意改变子函数只能被处于同一文件的主函数或其他子函数调用子函数只能被处
32、于同一文件的主函数或其他子函数调用在在M函数文件中,子函数的优先级仅次于内建函数函数文件中,子函数的优先级仅次于内建函数同一文件的主函数、子函数的工作空间彼此独立同一文件的主函数、子函数的工作空间彼此独立help、lookfor等指令都不能直接提供关于子函数的任何等指令都不能直接提供关于子函数的任何帮助信息帮助信息子函数的帮助操作:子函数的帮助操作:help primefun/subfunTel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.4 函数类型与使用方法函数类型与使用方法3.4.5 私有函数与重私有
33、函数与重载函数函数Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.4 函数类型与使用方法函数类型与使用方法3.4.6 串演算函数串演算函数Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.4 函数类型与使用方法函数类型与使用方法3.4.7 函数句柄函数句柄F函数句柄的创建和观察函数句柄的创建和观察函数句柄创建:函数句柄创建:n利用利用符号,或利用转换函数符号,或利用转换函数str2funcn被创建句柄的函数文件必须
34、在当前视野范围内被创建句柄的函数文件必须在当前视野范围内n如果函数不在当前视野内,所创建的函数句柄无效如果函数不在当前视野内,所创建的函数句柄无效n此时此时MATLAB既不会发布既不会发布“出错出错”信息,也不会警告信息,也不会警告n定义函数句柄时,所指定的函数名不应包括路径信息,定义函数句柄时,所指定的函数名不应包括路径信息,也不应该包括扩展名也不应该包括扩展名函数句柄内涵观察:函数句柄内涵观察:functionsfunctions函数只能接受(函数只能接受(11)函数句柄数组,)函数句柄数组,并返回一个单构架,包含若干个域,以记录函数并返回一个单构架,包含若干个域,以记录函数的各种信息的各
35、种信息Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.4 函数类型与使用方法函数类型与使用方法F函数句柄的用法函数句柄的用法通过函数句柄执行相应函数的计算通过函数句柄执行相应函数的计算无效函数句柄无效函数句柄Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.4 函数类型与使用方法函数类型与使用方法3.4.8 嵌套函数嵌套函数F在函数体内部定义的函数,包含在函数体内部定义的函数,包含M文件的基本元素,以文件的基本元素
36、,以end表表示结束示结束F可以在一个函数内部定义多个嵌套函数,也可以使用多重嵌套可以在一个函数内部定义多个嵌套函数,也可以使用多重嵌套F函数可以调用自己函数体中的嵌套函数,但不能调用嵌套函数函数可以调用自己函数体中的嵌套函数,但不能调用嵌套函数内部更深层次的嵌套函数内部更深层次的嵌套函数F同级函数可以相互调用,也可以调用比自己低一级的嵌套函数同级函数可以相互调用,也可以调用比自己低一级的嵌套函数F嵌套函数拥有自己的工作空间,但是它有权限访问其所嵌套地嵌套函数拥有自己的工作空间,但是它有权限访问其所嵌套地方的所有函数的工作空间方的所有函数的工作空间F被主函数赋值的变量可以被主函数中任意一个嵌套
37、函数访问,被主函数赋值的变量可以被主函数中任意一个嵌套函数访问,嵌套函数的变量值也可以被任何包含它的函数访问嵌套函数的变量值也可以被任何包含它的函数访问F由嵌套函数返回的变量不包含在外部函数中由嵌套函数返回的变量不包含在外部函数中F使用函数句柄可以使得在函数的作用域之外也可以访问这个函使用函数句柄可以使得在函数的作用域之外也可以访问这个函数,但是函数的句柄必须在函数作用域内被创建数,但是函数的句柄必须在函数作用域内被创建F嵌套函数在同一个嵌套函数在同一个M文件中与其他函数共享非全局变量文件中与其他函数共享非全局变量Tel:63292873QQ:641296082Email:zuo_Tel:63
38、292873QQ:641296082Email:zuo_3.4 函数类型与使用方法函数类型与使用方法3.4.9 内联函数与匿名函数内联函数与匿名函数Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.4 函数类型与使用方法函数类型与使用方法3.4.10 函数使用方法函数使用方法Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.5 数据数据I/O与文件操作与文件操作2.3.3 元胞数组内容的调取元胞数组内容的调取F调取一
39、个元胞:使用圆括号,得到元调取一个元胞:使用圆括号,得到元胞胞F调取一个元胞的内容:使用大括号调取一个元胞的内容:使用大括号F调取元胞内的子数组调取元胞内的子数组F同时调取多个元胞内容:同时调取多个元胞内容:dealTel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_2.3 元胞数组及其运算元胞数组及其运算2.3.4 元胞数组与其它类型的转换元胞数组与其它类型的转换F把数值数组转换为元胞数组把数值数组转换为元胞数组C=num2cell(A,dimN)把把dimN指定指定“维号维号”方向的数组元素存为方向的数组元
40、素存为C的一个元胞的一个元胞dimN缺省时,默认数组每个元素各存为缺省时,默认数组每个元素各存为C的一个元胞的一个元胞F把矩阵分解成元胞数组把矩阵分解成元胞数组C=mat2cell(B,M,N)把矩阵把矩阵B转换为元胞数组转换为元胞数组CM、N的元素数分别决定的元素数分别决定C的行数和列数的行数和列数M、N的元素值分别决定的元素值分别决定C中相应位置元胞的行列大小中相应位置元胞的行列大小F把元胞数组转换为矩阵把元胞数组转换为矩阵D=cell2mat(C)进行转换时元胞中的内容要合适进行转换时元胞中的内容要合适Tel:63292873QQ:641296082Email:zuo_Tel:63292
41、873QQ:641296082Email:zuo_2.4 构架数组及其运算构架数组及其运算2.4.1 构架数组的创建和显示构架数组的创建和显示F直接创建法及显示直接创建法及显示创建方式:构架名创建方式:构架名.域名域名.子域名子域名显示方法:构架名显示方法:构架名.域名域名.子域名子域名F利用构造函数创建构架数组利用构造函数创建构架数组构造函数构造函数structstruct不能直接创建带子域的构架数组不能直接创建带子域的构架数组子域需要另行创建子域需要另行创建Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo
42、_2.4 构架数组及其运算构架数组及其运算2.4.2 构架数组域中内容的调取和设置构架数组域中内容的调取和设置F前提:事先知道域名前提:事先知道域名F调取和设置:调取和设置:FN=fieldnames(S_n):获得构架域名:获得构架域名FC=getfield(S_n,S_index,f_name,f_index):获得具体构架域中内容:获得具体构架域中内容S_n=setfield(S_n,S_index,f_name,f_index,value):设置具体构架域中内容:设置具体构架域中内容Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641
43、296082Email:zuo_2.4 构架数组及其运算构架数组及其运算2.4.3 构架数组操作深入应用构架数组操作深入应用F构架数组的扩充和收缩构架数组的扩充和收缩扩充:增加行、列,扩充维数扩充:增加行、列,扩充维数收缩:将某行(列)赋给空值,删除该行(列)收缩:将某行(列)赋给空值,删除该行(列)F增添域和删除域增添域和删除域在数组中任何一个构架上增添域,其影响遍及整在数组中任何一个构架上增添域,其影响遍及整个构架数组个构架数组增添子域的操作只影响被操作的具体构架,而不增添子域的操作只影响被操作的具体构架,而不影响整个构架数组影响整个构架数组删除子域的操作也只影响被操作的具体构架删除子域的
44、操作也只影响被操作的具体构架删除域的操作针对整个构架数组实施删除域的操作针对整个构架数组实施F数值运算操作和函数对构架数组的应用数值运算操作和函数对构架数组的应用Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_2.4 结构数组及其运算结构数组及其运算2.4.4 构架数组和元胞数组之间的转换构架数组和元胞数组之间的转换F构架转换为元胞:构架转换为元胞:函数函数struct2cell把构架数组的域转换为元胞数组的行把构架数组的域转换为元胞数组的行元胞数组的第二维对应构架数组的第一维元胞数组的第二维对应构架数组的
45、第一维构架数组中的子域仍被作为子构架存放构架数组中的子域仍被作为子构架存放F元胞转换为构架:元胞转换为构架:函数函数cell2struct先决定把元胞的哪一维转换为构架的域先决定把元胞的哪一维转换为构架的域要事先给出域名字符串要事先给出域名字符串Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_元胞数组元胞数组构架数组构架数组举例举例(34)元胞数组)元胞数组A(34)构架数组)构架数组B,有两个域名,有两个域名为为f1、f2的域的域基本组分基本组分元胞(元胞(Cell)构架(构架(Structure)编址方
46、式编址方式数码下标:全下标、单下标数码下标:全下标、单下标如:如:A(1,2),即即A(4)数码下标:全下标、单下标数码下标:全下标、单下标如:如:B(1,2),即,即B(4)存放数据类型存放数据类型任何类型任何类型任何类型任何类型数据存放场所数据存放场所元胞本身,如元胞元胞本身,如元胞A(1,2)域(域(Field),如),如B(1,2).f1组分寻访方式组分寻访方式被标识的元胞名,如被标识的元胞名,如A(1,2)被标识的构架名,如被标识的构架名,如B(1,2)内容寻访方式内容寻访方式“大括号大括号”标识的元胞名标识的元胞名如:如:A1,2带带“域名域名”的标识构架名的标识构架名如:如:B(1,2).f1相互转换相互转换cell2structstruct2cell