



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Matlab 自定义函数1、函数文件+调用命令文件:需单独定义一个自定义函数的M文件;2、函数文件+子函数:定义一个具有多个自定义函数的M文件;3、Inline:无需M文件,直接定义;4、Syms+subs:无需M文件,直接定义;5、字符串+subs:无需M文件,直接定义.6、匿名函数 7、直接通过符号定义.1、函数文件+调用函数文件:定义多个M文件:%调用函数文件:myfile.mclearclcfor t=1:10y=mylfg(t);% 调用函数时要注意实参与形参的匹配!fprintf(%4d(1/3)=%6.4fn,t,y);end%自定义函数文件: mylfg.mfunction y=mylfg(x)%注意:函数名(mylfg)必须与文件名(mylfg.m)一致Y=x(1/3);注:这种方法要求自定义函数必须单独写一个M文件,不能与调用的命令文件写在同一个M文件中。2、函数文件+子函数:定义一个具有多个子函数的M文件%函数文件:funtry2.m function =funtry2()%可以无自变量()或无因变量for t=1:10 y=lfg2(t); fprintf(%4d(1/3) = %6.4fn,t,y);endfunction y=lfg2(x) %子函数y=x(1/3);%注:自定义函数文件funtry2.m中可以定义多个子函数function。子函数lfg2只能被主函数和主函数中的其他子函数调用。3、Inline:无需M文件,直接定义;%inline命令用来定义一个内联函数:f=inline(函数表达式, 变量1,变量2,)。调用方式:y=f(数值列表)%注意:代入的数值列表顺序应与inline()定义的变量名顺序一致。例如:f=inline(x2+y,x,y);z=f(2,3)Ans=7注:这种函数定义方式是将它作为一个内部函数调用。特点是,它是基于Matlab的数值运算内核的,所以它的运算速度较快,程序效率更高。缺点是,该方法只能对数值进行代入,不支持符号代入,且对定义后的函数不能进行求导等符号运算。内联函数定义方式是将 f 作为一个内部函数调用。其特点是:调用方式最接近于我们平时对函数的定义,使程序更具可读性。同时由于它是基于 Matlab 的数值计算内核的,所以它的运算速度较快,程序更有效率。这种定义方式的缺点:定义一个内联函数用去的内存空间比相同条件下其他的方法要大得多。该方法只能对数值进行代入,不支持符号代入,并且对于定义后的函数不能进行求导等符号运算。例:通过命令clear 清除工作空间的所有变量后,执行如下指令ClearClcf=x2;Syms x g;g=x2;h=inline(x2,x);whos4、Syms+subs:无需M文件,直接定义;用syms定义一个符号表达式,用subs调用:Syms f x%定义符号f=1/(1+x2);%定义符号表达式也是符号subs(f, x,代替x的数值或符号)注:对于在syms中已经定义过的符号变量,在subs中进行替代时,单引号可以省略。但是,如果在syms后又被重新定义为其他类型,则必须加单引号,否则不可替换。这种函数定义方法的特点是,可以用符号进行替换Syms f xf=1/(1+x2);subs(f, x,y2)ans=1/(1+(y2)2)注:该方法的缺点是,由于使用符号运算内核,运算速度会大大降低。5、字符串+subs:无需M文件,直接定义.直接定义一个字符串,用subs命令调用。例如:f=1/(1+x2)%定义字符串z=subs(f,x,2)g=subs(f,x,y2)注:此处 x 的单引号不可省略。本函数方式可以代入字符,但字符不能参与运算,否则将自行转化成该字符的 ASCII 码运算,这与我们想要的结果可能会大相径庭。优点是,占用内存最少,定义格式方面自由。缺点是,无法对字符进行符号转化。subs 命令的一种比较方便的调用方法当所要替代的符号在调用前都已经有了数值定义,则可以直接调用:subs(f).例如:f=x2*y;x=2;y=3;subs(f)ans=126.匿名函数使用matlab函数句柄操作符,可以定义指向matlab内置函数和用户自定义函数的函数句柄,函数句柄也可以像函数一样的使用。例如:x=-pi:0.1:pi; fh=cos,sin;fh =cossinplot(fh2(x)7、直接通过符号定义.示例如下: f=(x,y)(x.2-sin(y)f =(x,y)(x.2-sin(y) f(2,3)ans =3.8589函数计算的几种方式n 函数名(自变量值表)n eval(字符串);%字符串可以是命令,表达式,语句,M文件名n feval(函数名,自变量值表); %这种形式比用:函数名(自变量值表)的方式好n 泛函的调用:泛函名(函数名,参数列),泛函是以函数为自变量的函数,如求根函数fsolve,求最小值函数fminunc等都是泛函. 这里函数名是一种数据类型,称为函数句柄n N=datenum( 2008,8,8) %北京奥运会开幕日的序号,按公元1年1月1日0时序号为367开始计算,由于没有公元0年,故计算公元前x年,要按1-x年输入n N=datenum(2008,8,8,20,0,0)%北京奥运会开幕日20 时0分0秒的日序号(有小数)n N=feval(datenum,2008,8,8)n D3=dec2base(100,3)%100的3进制表示n g,x,y=gcd(3,5)%输出中g是3和5的最大公因子,整数x,y满足方程3x+5y=g求根函数fzero要求被求根的函数myfun是单变量的,但myfun是带有参数a的,不符合条件,可采用如下函数嵌套的方法来解决:function y = findzero(a, x0) options = optimset(Display, off); y = fzero(myfun, x0, options); function y = myfun(x) y = x3 + x + a; endendn 在嵌套函数中要用end表示函数定义的结束n 不用嵌套函数的另一种解决的方法是用匿名函数n 设有一个M函数文件function y = humps(x)y = 1./(x - 0.3).2 + 0.01) + 1./(x - 0.9).2 + 0.04) - 6;要计算这函数在x=2的值,可执行命令:fh = humps;fh(2.0)(也可写在脚本文件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年炼油装置启动与停车操作流程模拟题详解
- 2025年特岗教师招聘考试初中英语冲刺模拟题及解题技巧
- 2025年数据分析与挖掘技术面试模拟题集及解析
- 2025年英语口语模拟测试及提高方法
- 2025年医生中级专业能力面试题及答案
- 2025年国际贸易经理面试必-备知识模拟题集及策略指导
- 2025年护士执业资格考试模拟题及备考技巧
- 北师大版高中数学必修第一册 第七章概率 7.4事件的独立性 课件
- 临床教学课件规范
- 初中阅读教学课课件
- 诊疗规范培训课件
- 《KANO模型培训》课件
- 复苏室患者的交接流程
- 【人教版化学】选择性必修1 知识点默写小纸条(答案背诵版)
- DB21-T 2523-2015矿山地质环境恢复治理规程
- 新能源集控中心建设方案
- 《中国老年糖尿病诊疗指南(2024版)》解读课件
- 幼儿园 中班语言绘本《章鱼先生卖雨伞》
- 《中国女性乳腺癌患者糖尿病和糖尿病前期管理专家共识》 (2024版)
- 6大国工匠百炼成器教案-蓝色
- 蜂种买卖合同
评论
0/150
提交评论