Matlab 定义函数的几种方法

您所在的位置:网站首页 定义域的几种类型是什么 Matlab 定义函数的几种方法

Matlab 定义函数的几种方法

2023-10-13 03:54| 来源: 网络整理| 查看: 265

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 =     @(x,y)(x.^2-sin(y))

>> f(2,3) ans =        3.8589



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3