目 录CONTENT

文章目录

MATLAB基础之函数篇

GrantLi
2018-05-16 / 0 评论 / 1 点赞 / 477 阅读 / 4292 字 / 正在检测是否收录...

(1)函数文件+调用命令文件

说明:需单独定义一个自定义函数的M文件
例如:

function y= test_M(a, b)   
y = a^4 + rand(3,4)*(b);  
end

commond Window:

>> test_M(1,2)
ans =

    2.9143    1.2838    2.5844    1.0714
    1.9708    1.8435    2.9190    2.6983
    2.6006    2.8315    2.3115    2.8680

(2)函数文件+子函数

说明:说明:定义一个具有多个子函数的M文件
例如:

function y= test_M(a, b,c,d)   %主函数
x = a^4 + 4*(b);  
y=x+test2(c)+test3(d);  

function y=test2(c)             %子函数
y = 3*(c)+10; 

function y=test3(d)              %子函数
y = 2*(d)+5; 

commond Window:

>> test_M(1,2,3,4)

ans =

    41

(3)Inline:无需M文件,直接定义

说明:inline命令用来定义一个内联函数:f=inline(‘函数表达式’, ‘变量1’,’变量2’,……)。
调用方式:y=f(数值列表) 。

注意:代入的数值列表顺序应与inline()定义的变量名顺序一致。

例如:

>> f=inline('x^2+y','x','y');
>> z=f(1,2)

z =

     3

特点是,它是基于Matlab的数值运算内核的,所以它的运算速度较快,程序效率更高。
缺点是,该方法只能对数值进行代入,不支持符号代入,且对定义后的函数不能进行求导等符号运算。

(4)Syms+subs: 无需M文件,直接定义

说明:用syms定义一个符号表达式,用subs调用,用法:

Syms f x %定义符号
f=1/(1+x^2); %定义符号表达式
subs(f, ‘x’, 代替x的数值或符号)

例如:

>> syms f x
>> f=x^2+x-1;
>> subs(f,'x','y')
 
ans =
 
y^2 + y - 1

>> subs(f,x,'y')
 
ans =
 
y^2 + y - 1

特点:可以用符号进行替换
缺点:由于使用符号运算内核,运算速度会大大降低。

注:对于在syms中已经定义过的符号变量,在subs中进行替代时,单引号可以省略。但是,如果在syms后又被重新定义为其他类型,则必须加单引号,否则不可替换。

(5)字符串+subs

说明:无需M文件,直接定义一个字符串,用subs命令调用。
例如:

>> f1='a+10';       %定义字符串
>> z1=subs(f1,'a',5)
z1 =


15

优点:占用内存最少,定义格式方面自由。
缺点:无法对字符进行符号转化。当所要替代的符号在调用前都已经有了数值定义,则可以直接调用。

(6)匿名函数

说明:使用matlab函数句柄操作符@,可以定义指向matlab内置函数和用户自定义函数的函数句柄,函数句柄也可以像函数一样的使用。
例如:

>> x=-10:0.001:10;
>> y=@exp

y =

  包含以下值的 function_handle:

    @exp

>> plot(y(x))

也可以定义二重匿名函数,例如:

>> f=@(x,y)@(a,b)x+y+a-b

f =


    @(x,y)@(a,b)x+y+a-b

(7)直接通过@符号定义

例如:

>> f=@(x,y)(x^2+9*y);
>> f(3,3)

ans =

    36

(8)Matlab函数总结

参考链接:matlab函数总结

1

评论区