MATALAB自定义函数的编写和调用方法

2022年4月22日 27点热度 0人点赞

     MATLAB是科学研究的利器,编程简单而直观。MATLAB中有一些系统自带的函数,如sin,cos,tan,ceil等,但在一些复杂计算中,需要自己定义一些函数,有助于模块化编程,理清思路。本经验介绍在MATAB中自定义函数的一些简单方法。

工具/原料

  • MATALB软件,PC机

方法/步骤

  1. 1

    利用*.m函数定义函数

          这种方法需要定义一个*.m函数,包括输入参数,输出参数,函数体几个部分构成,调用函数时,直接调用函数名称即可。

       示例:已知平面两个点A,B的坐标分别为x1,y1,x2,y2,求A和B两点之间的距离,可以编写一个函数名称为dist.m(函数名称和M文件名称要一致),其具体内容为:

        function  distance = dist(x1, y1, x2, y2)

        distance = sqrt((x2-x1).^2 + (y2-y1).^2);

        具体调用时,直接调用dist(10,10,100,100)即可。

    可用"type+函数文件名"查看函数的具体内容,或者用“help +函数文件名”

  2. 2

    inline方式定义(可以直接定义而无需.m文件)。

        这种方式类似C++里的内联函数,运算速度较快,程序效率更高,但只能对数值进行代入。

        其格式为:f=inline('函数表达式','变量1','变量2',...) ;

     示例:求圆面积的函数,可以直接定义为:

        circle_area=inline('3.14*r^2','r');  

        调用时,如果半径r=10,则直接用  y=circle_area(10)调用即可。 

  3. 3

    syms+subs方式来进行调用(可以直接定义而无需.m文件)

    用syms定义符号式,用subs来调用。

    示例:求圆面积函数

           syms r  y;  

           y = 3.14*r^2;  

           subs(y,x,10) ;

  4. 4

    匿名函数,直接通过@符号定义(可以直接定义和调用,无需.m文件)

        如图的示例,是求x和y的平方和z。

       还有下面一例:

    power = @(x, n) x.^n;

    result1 = power(7, 3)

    result2 = power(49, 0.5)

    程序运行后,可以得到以下结果:

    >>

    result1 =  343 

    result2 =  7

  5. 5

    主函数和子函数

          除了匿名函数以外的任何函数都必须在文件中定义。 

          主函数可以外部调用,用命令行的形式或者在函数中调用的形式。但子函数只能内部调用。子函数仅对于主函数或者相关的子函数中可见。

        示例:写一个名为“quadratic”的函数,来计算二次方程的根。 

       该函数的输入为:二次系数,线性系数和常数项(a,b,c)。 

       其输出为解得的二次方程的根(x1,x2)。

        其运行结果为:

    >>quadratic(2,4,-4)%求解方程:a*x^2+b*x+c=0这个方程的根

    ans = 0.7321 

  6. 6

    嵌套函数

         在一个函数的主体中定义函数,被称为嵌套函数。 嵌套函数在其依附的另一个函数的范围内定义,与其一起共享工作空间的访问。

         示例:用嵌套函数实现求解一元二次方程。

    (1)函数内容为:

    function [x1,x2] = quadratic2(a,b,c)

    function disc

      d = sqrt(b^2 - 4*a*c);

    end   

    disc;

    x1 = (-b + d) / (2*a);

    x2 = (-b - d) / (2*a);

    end   

    (2)其运行结果为:

    >>quadratic2(2,4,-4)%求解方程:a*x^2+b*x+c=0这个方程的根

    ans = 0.7321 

    END

注意事项

  • 如果函数复杂,可考虑.m文件,如果运算简单,可以考虑用后面几种方法。
  • 可用"type+函数文件名"查看函数的具体内容,或者用“help +函数文件名”
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。

展开阅读全部

laozhao

这个人很懒,什么都没留下

文章评论