- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
matlab函数定义及调用问题
函数调用是使主程序简明清晰的重要工具,在很大程度上简化了程序的复杂程度,也方便于不同程序使用相同模块的调用。下面主要介绍:
函数文件+调用命令文件:需单独定义一个自定义函数的M文件
这种方法很简单,定义好输入输出就可以自由调用函数。
(1)定义函数
新建一个m文件 在m文件里面第一行输入function [输出值]=(任何字母)(输入变量),输入变量和输出值个数不限,根据自己需要定义,接着定义你要实现的功能,最后保存这个m文件,注意:这个m文件的名字就是后面程序调用的名称,同时主程序和函数文件必须保存在同一个文件夹中,而且可以在函数中再嵌套其它函数。
(2)调用函数
[输出值]=函数保存的文件名(输入变量)
注意,如果输出值只有一个,可以不用中括号,如果两个以上就不必须使用,否则只输出第一个值,而且采用小括号会报错。
实例
编写一个解方程的程序:
定义函数:
function [x,y]=equal(a,b,c)
d=b^2-4*a*c;
x=(-b+sqrt(d))/(2*a);
y=(-b-sqrt(d))/(2*a);
文件保存为equal
主程序调用:
[r1 r2]=myfunction(2,3,-7)
结果:
r1 =1.2656
r2 = -2.7656
还是上面的例子,实现函数中调用函数:
定义函数1:
function [testfun]=supple(j)
testfun =j+5;
保存文件为supple(此处不一定要和函数名相同)
定义函数2:
function [x,y]=equal(a,b,c)
c=supple(c); %调用了一个函数
d=b^2-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.2656
r2 = -2.7656 %计算结果相同,说明函数中调用函数成功。
下面是其它几种常用的函数定义和调用方法:
1、函数文件+调用函数文件:定义多个M文件:
%?调用函数文件:myfile.m
clear
clc
for t=1:10
y=mylfg(t);
fprintf(‘%4d^(1/3)=%6.4f\n’,t,y);
end
%自定义函数文件: mylfg.m
function 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.4f\n’);
End
function y=lfg2(x)
Y= x^(1/3);
%注:自定义函数文件funtry2.m中可以定义多个子函数function。子函数lfg2只能被主函数和主函数中的其他子函数调用。
3、Inline:无需M文件,直接定义;
%inline命令用来定义一个内联函数:f=inline(‘函数表达式’, ‘变量1’,’变量2’,……)。
调用方式:y=f(数值列表)?%注意:代入的数值列表顺序应与inline()定义的变量名顺序一致。
例如:
f=inline(‘x^2+y’,’x’,’y’);
z=f(2,3)
Ans=7
注:这种函数定义方式是将它作为一个内部函数调用。特点是,它是基于Matlab的数值运算内核的,所以它的运算速度较快,程序效率更高。缺点是,该方法只能对数值进行代入,不支持符号代入,且对定义后的函数不能进行求导等符号运算。
例:
Clear
Clc
f=’x^2’;
Syms x g;
g=x^2;
h=inline(‘x^2’,’x’);
4、Syms+subs:?无需M文件,直接定义;
用syms定义一个符号表达式,用subs调用:
Syms f x?%定义符号
f=1/(1+x^2);?%定义符号表达式
subs(f, ‘x’,?代替x的数值或符号)
注:对于在syms中已经定义过的符号变量,在subs中进行替代时,单引号可以省略。但是,如果在syms后又被重新定义为其他类型,则必须加单引号,否则不可替换。
这种函数定义方法的特点是,可以用符号进行替换
Syms f x
f=1/(1+x^2);
subs(f, ‘x’,’y^2’)
ans=
1/(1+(y^2)^2)
注:该方法的缺点是,由于使用符号运算内核,运算速度会大
文档评论(0)