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\n',a,b,sum_result);
fprintf('%d - %d的差是:%f\n',a,b,sub_result);
fprintf('%d * %d的积是:%f\n',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\n',a,b,sum_result);
fprintf('%d - %d的差是:%f\n',a,b,sub_result);
fprintf('%d * %d的积是:%f\n',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对其它函数进行了调用,那么也就是所谓的嵌套功能

转载于:https://www.cnblogs.com/shuqingstudy/p/4866100.html

Matlab中,函数是在M文件中定义的函数,它们只能被主函数调用。函数的定义格式和主函数相同,只是需要在主函数之后定义。函数之间的先后顺序可以任意放置。 以下是一个示例,展示了如何定义和使用Matlab函数: ```matlab % 主函数 function mainFunction() disp('This is the main function'); % 调用函数 subFunction(); end % 函数 function subFunction() disp('This is the sub function'); end ``` 在上面的示例中,`mainFunction`是主函数,它被调用时会显示"This is the main function"。`subFunction`是函数,它在主函数中被调用时会显示"This is the sub function"。注意,函数需要定义在主函数之后。 你也可以在一个函数内部嵌套一个或多个函数,这些在其他函数内部定义的函数称为嵌套函数。嵌套函数内部也可以定义嵌套函数。这样的设计可以帮助你更好地组织和管理代码。 以下是一个嵌套函数的示例: ```matlab function parent() disp('This is the parent function'); nestedFunction(); % 嵌套函数 function nestedFunction() disp('This is the nested function'); end end ``` 在上面的示例中,`parent`是主函数,它被调用时会显示"This is the parent function",并且会调用嵌套函数`nestedFunction`,它会显示"This is the nested function"。注意,嵌套函数在主函数内部定义。 希望这可以帮助你理解Matlab中的函数和嵌套函数的概念和用法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值