matlab函数定义和调用问题

上传人:豆浆 文档编号:768340 上传时间:2017-05-14 格式:DOCX 页数:5 大小:20.48KB
返回 下载 相关 举报
matlab函数定义和调用问题_第1页
第1页 / 共5页
matlab函数定义和调用问题_第2页
第2页 / 共5页
matlab函数定义和调用问题_第3页
第3页 / 共5页
matlab函数定义和调用问题_第4页
第4页 / 共5页
matlab函数定义和调用问题_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《matlab函数定义和调用问题》由会员分享,可在线阅读,更多相关《matlab函数定义和调用问题(5页珍藏版)》请在金锄头文库上搜索。

1、 函数调用是使主程序简明清晰的重要工具,在很大程度上简化了程序的复杂程度,也方便于不同程序使用相同模块的调用。下面主要介绍:函数文件+调用命令文件:需单独定义一个自定义函数的 M 文件这种方法很简单,定义好输入输出就可以自由调用函数。(1)定义函数新建一个 m 文件 在 m 文件里面第一行输入 function 输出值= (任何字母)(输入变量),输入变量和输出值个数不限,根据自己需要定义,接着定义你要实现的功能,最后保存这个 m 文件,注意:这个 m 文件的名字就是后面程序调用的名称,同时主程序和函数文件必须保存在同一个文件夹中,而且可以在函数中再嵌套其它函数。(2)调用函数输出值=函数保存

2、的文件名(输入变量)注意,如果输出值只有一个,可以不用中括号,如果两个以上就不必须使用,否则只输出第一个值,而且采用小括号会报错。实例编写一个解方程的程序: 2370x例 如 求 方 程 的 根 ,定义函数:function x,y=equal(a,b,c)d=b2-4*a*c;x=(-b+sqrt(d)/(2*a);y=(-b-sqrt(d)/(2*a);文件保存为 equal主程序调用:r1 r2=myfunction(2,3,-7)结果:r1 =1.2656r2 = -2.7656还是上面的例子,实现函数中调用函数:定义函数 1:function testfun=supple(j)tes

3、tfun =j+5;保存文件为supple(此处不一定要和函数名相同 )定义函数 2:function x,y=equal(a,b,c)c=supple(c); %调用了一个函数d=b2-4*a*c;x=(-b+sqrt(d)/(2*a);y=(-b-sqrt(d)/(2*a);文件保存为 equal主程序调用:r1 r2=myfunction(2,3,-12) %(将c 有-7改为-12)结果:r1 =1.2656r2 = -2.7656 %计算结果相同,说明函数中调用函数成功。下面是其它几种常用的函数定义和调用方法:1、函数文件+ 调用函数文件:定义多个 M 文件:% 调用函数文件:myf

4、ile.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.mfunction =funtry2()for t=1:10y=lfg2(t)fprintf(%4d(1/3)=%6.4fn);E

5、ndfunction 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 的数值运

6、算内核的,所以它的运算速度较快,程序效率更高。缺点是,该方法只能对数值进行代入,不支持符号代入,且对定义后的函数不能进行求导等符号运算。例:ClearClcf=x2;Syms x g;g=x2;h=inline(x2,x);4、Syms+subs: 无需 M 文件, 直接定义;用 syms 定义一个 符号表达式 ,用 subs 调用:Syms f x %定义符号f=1/(1+x2); %定义符号表达式subs(f, x, 代替 x 的数值或符号)注:对于在 syms 中已经定义过的符号变量,在 subs 中进行替代时,单引号可以省略。但是,如果在 syms 后又被重新定义为其他类型,则必须加单

7、引号,否则不可替换。这种函数定义方法的特点是,可以用符号进行替换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)注:优点是,占用内存最少,定义格式方面自由。缺点是,无法对字符进行符号转化。当所要替代的符号在调用前都已经有了数值定义,则可以直接调用:subs(f).例如:f=x2*y;x=2;y=3;subs(f)ans=12

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号