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

>> f(2,3)
ans =

       3.8589













  • 102
    点赞
  • 384
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MATLAB中,可以使用函数句柄操作符@来定义指向MATLAB内置函数和用户自定义函数的函数句柄。函数句柄可以像函数一样使用。 例如,如果想要定义一个函数f(x) = x^2 + 1,可以在脚本中编写一个名为fun的函数,并将其存储为与函数名相同的文件fun.m。函数的定义如下: ```matlab function y = fun(x) y = x^2 + 1; end ``` 在这个例子中,fun是一个自定义函数,输入参数是x,输出参数是y,函数的定义是y = x^2 + 1。 另外,MATLAB还支持定义嵌套函数,也就是在一个主函数内部定义其他函数。例如,下面的示例演示了如何定义一个主函数son_function和一个嵌套函数find_max: ```matlab 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 end end ``` 在这个例子中,son_function是主函数,而find_max是嵌套函数。主函数位于最上方,嵌套函数位于主函数内部。通过调用find_max函数,可以找到输入参数a、b和c中的最大值。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Matlab 定义函数几种方法](https://blog.csdn.net/u013270326/article/details/77871774)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [【MATLAB定义函数几种方式】](https://blog.csdn.net/weixin_46421722/article/details/122592287)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值