Matlab定义函数的⼏种⽅法1、函数⽂件+调⽤命令⽂件:需单独定义⼀个⾃定义函数的M⽂件
例:⾃定义求和函数
需要⾃定义⼀个 my_sum.m 的⽂件来存放函数
function[s]=my_sum(n)
s=0;
for i=1:n
s=s+i;
end
注意:函数名(my_sum)必须与⽂件名(my_sum.m)⼀致
调⽤函数的时候函数⽂件放在当前⼯作⽬录下⾯。
2、函数⽂件+⼦函数:定义⼀个具有多个⼦函数的M⽂件
例:求最⼤值函数
function son_function( )        %主函数必须位于最上⽅
%⼦函数举例
max1=find_max(1,2,3)
max2=find_max(7,3,9)
function max=find_max(a,b,c)    %⼦函数
if (a>=b)&(a>=c)
max=a;
elseif (b>=a)&(b>=c)
max=b;
else
max=c;
end
注意:⼀个m⽂件可以写多个function,但是只有第⼀个能够在其他⽂件中调⽤,其余的函数只能在该⽂件中调⽤。
函数名要与主函数名⼀致
3、Inline:⽆需M⽂件,直接定义
%inline命令⽤来定义⼀个内联函数:f=inline(‘函数表达式’, ‘变量1’,’变量2’,……)。
调⽤⽅式:y=f(数值列表) %注意:代⼊的数值列表顺序应与inline()定义的变量名顺序⼀致。
例:
f=inline('x^2+y','x','y');
z=f(2,3)
例:
inline函数调⽤格式如下所⽰:
>> fname = inline('sum(1:n)','n')
此时会输出:
fname =
Inline function:
fname(n) = sum(1:n)
⾸先构造函数句柄,随后就可利⽤feval函数计算:
>> calsum = feval(fname,100)
此时就会输出:
calsum =
5050
4、匿名函数
使⽤matlab函数句柄操作符@,可以定义指向matlab内置函数和⽤户⾃定义函数的函数句柄,函数句柄也可以像函数⼀样的使⽤。
例:
x=-pi:0.1:pi;
fh={@cos,@sin};
plot(fh{2}(x))
fh=
@cos    @sin
5、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)
注:该⽅法的缺点是,由于使⽤符号运算内核,运算速度会⼤⼤降低。
6、字符串+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
7、直接通过@符号定义。
例:
>> f=@(x,y)(x.^2-sin(y))
f =
matlab定义函数表达式
@(x,y)(x.^2-sin(y))
>> f(2,3)
ans =
3.8589

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。