Matlab自定义函数的五种方法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Matlab自定义函数的五种方法 [转]

n?1、函数文件+调用命令文件:需单独定义一个自定义函数的M文件;

n?2、函数文件+子函数:定义一个具有多个自定义函数的M文件;

n?3、Inline:无需M文件,直接定义;

n?4、Syms+subs:?无需M文件,直接定义;

n?5、字符串+subs:无需M文件,直接定义.

?

1、函数文件+调用函数文件:定义多个M文件:

%?调用函数文件:

clear

clc

for t=1:10

y=mylfg(t);

fprintf(‘%4d^(1/3)=%\n’,t,y);

end

%自定义函数文件:

function y=mylfg(x)?%注意:函数名(mylfg)必须与文件名()一致

Y=x^(1/3);

注:这种方法要求自定义函数必须单独写一个M文件,不能与调用的命令文件写在同一个M文件中。

2、函数文件+子函数:定义一个具有多个子函数的M 文件

%命令文件:

function []=funtry2()

for t=1:10

y=lfg2(t)

fprintf(‘%4d^(1/3)=%\n’);

End

function y=lfg2(x)

Y= x^(1/3);

%注:自定义函数文件中可以定义多个子函数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)

注:该方法的缺点是,由于使用符号运算内核,运算速度会大大降低。

5、字符串+subs:无需M文件,直接定义.

直接定义一个字符串,用subs命令调用。例如:

f=’1/(1+x^2)’?%定义字符串

z=subs(f,’x’,2)

g=subs(f,’x’,’y^2’)

注:优点是,占用内存最少,定义格式方面自由。

缺点是,无法对字符进行符号转化。

当所要替代的符号在调用前都已经有了数值定义,则可以直接调用:subs(f).例如:

f=’x^2*y’;

x=2;y=3;

subs(f)

ans=12

相关文档
最新文档