• matlab 子函数的使用


    本文参考了该篇博客:http://www.cnblogs.com/MarshallL/p/4048846.html

    对其进行学习,为我所用吧。

    一、

    在matlab的函数定义中,如果函数如果函数较长或较多,往往可以将各函数分别写在多个.m文件中,但有时函数可能很短,就几行,可能希望将多个函数定义放在同一个.m文件中,这里就存在一个子函数的定义问题。

    对于函数文件,一个M文件只能定义一个主函数,即第一句function所定义的函数,而且整个M文件在外部使用时候表现出来的也只有这一个函数(主函数名和函数M文件名保持一致)。

    在matlab中一个.m文件中可以有多个的子函数,可以互相调用,下面结合一个简单的例子来分析。

    格式:

    function MainFunction
        %主函数内容
        function SubFunction1
            %子函数内容
        end
        function SubFunction2
            %子函数内容
        end
        function SubFunction3
            %子函数内容
        end
    end

    自定义函数:mathTest.m

    function [sum_result,sub_result,mul_result] = mathTest(x,y) %主函数
    sum_result=sum(x,y);  %子函数的调用
    sub_result=sub(x,y);
    mul_result=mul(x,y);
    
    %子函数定义:
    function result=sum(x,y) %+
    result = x+y;
    
    
    function result=sub(x,y) %-
    result = x-y;
    
    
    function result=mul(x,y) %*
    result = x*y;

    调用该函数M文件:

    %本函数测试M文件主函数调用(子函数被隐藏)
    clc;clear;
    a=2;b=3;
    
    [sum_result,sub_result,mul_result] = mathTest(a,b); %主函数调用
    fprintf('%d + %d的和是:%f
    ',a,b,sum_result);
    fprintf('%d - %d的差是:%f
    ',a,b,sub_result);
    fprintf('%d * %d的积是:%f
    ',a,b,mul_result);

    第二、看那篇博客发现一个有用的功能,实际是可以将以上文件:自定义函数文件和调用文件合在一起的(虽然不推荐)

    这里我们定义了一个没有输入没有输出的函数该函数将作为主函数,而其他的函数均为子函数,由主函数调用子函数,而子函数间是可以互相调用,但不能调用主函数。这时的m文件不需要任何输入,调用时可以直接点运行m文件的快捷键,或者在命令框中输入m文件名然后回车运行

    举例 脚本文件:mathMain.m

    %本函数测试M文件主函数调用(子函数被隐藏)
    function [] =mathMain() %不能省略
    clc;clear;
    a=200;b=300;
    [sum_result,sub_result,mul_result] = mathTest(a,b); %主函数调用
    fprintf('%d + %d的和是:%f
    ',a,b,sum_result);
    fprintf('%d - %d的差是:%f
    ',a,b,sub_result);
    fprintf('%d * %d的积是:%f
    ',a,b,mul_result);
    %结束
    %---------------------------------------------------------------- function [sum_result,sub_result,mul_result] = mathTest(x,y) %主函数 sum_result=sum(x,y); %子函数的调用 sub_result=sub(x,y); mul_result=mul(x,y); %子函数定义: function result=sum(x,y) %+ result = x+y; function result=sub(x,y) %- result = x-y; function result=mul(x,y) %* result = x*y;

    其实,上面这个代码中,

    mathTest(),
    sum(x,y)
    sub(x,y)
    mul(x,y)都可以看作子函数,只不过mathTest对其它函数进行了调用,那么也就是所谓的嵌套功能
  • 相关阅读:
    bootstrap table本地数据使用方法
    openlayers+geoserver ImageWMS过滤动态刷新图层
    openlayers+geoserver+wms实现空间查询,属性查询
    openlayers4.6.5官方api、实例、开发包
    js判断点在线上位置,距离各端点距离算法
    openlayers之style符号化
    js判断向量叉点 并求出交点坐标
    利用jquery判断点是否在椭圆内
    JavaScript高级程序设计21.pdf
    JavaScript高级程序设计20.pdf
  • 原文地址:https://www.cnblogs.com/shuqingstudy/p/4866100.html
Copyright © 2020-2023  润新知