matlab中.m内的子函数和.m函数

您所在的位置:网站首页 gui的m文件怎么写子函数 matlab中.m内的子函数和.m函数

matlab中.m内的子函数和.m函数

2024-07-10 12:01| 来源: 网络整理| 查看: 265

一、.m内部的子函数:

在一个m文件中写多个函数,每个函数都以function开始,结束可以带end,也可以不带(这种情况下,出现另一个function或者到达文件结尾表明前一个function结束).  

案例1:

如果文件开头有 function + 名字;即每个子函数都不带end,即 function + name

function name

       ……

       ……

function sub_main clc clear all; % 声明全局变量a,b,c global a b c %变量赋值 a=1; b=2; c=3; d=10; disp(10); e=add(d) function w=add(d) %函数内也要声明全局变量 global a global b global c w=(a+b+c)/d;

归根结底,毕竟是一个函数,在此文件运行完之后,函数生命周期结束,所有的变量都会消失;个人不建议采用这种方式;

如下所示:

案例2:

如果文件开头没有 function + 名字;即每个子函数都为:

function name

       ……

       ……

end

% function sub_main clc;clear all; % 声明全局变量a,b,c global a b c %变量赋值 a=1; b=2; c=3; d=10; disp(10); e=add(d) function w=add(d) %函数内也要声明全局变量 global a global b global c w=(a+b+c)/d; end

脚本运行完毕后,脚本中函数的变量会显示:

 

二、调用函数文件/.m外部的子函数:

第一个函数作为主函数,可以从该m文件外部调用,其它函数都是局部函数,只能被m文件中的函数调用。主函数命名最好和m文件名相同,如果不同,则调用时应该使用m文件名(不带扩展名)。

案例1:函数内部存在子函数,并且在外部调用.m文件!

主调函数:

clear;clc;close all; %调用其他.m文件,必须是.m的保存名!而不是.m内部的函数名; %例如此例中:function sub_main test_function;

被调函数:

function sub_main % clc;clear all; % 声明全局变量a,b,c global a b c %变量赋值 a=1; b=2; c=3; d=10; disp(10); e=add(d) function w=add(d) %函数内也要声明全局变量 global a global b global c w=(a+b+c)/d;

即:必须写:test_function; 写function sub_main 是错误的!

1、非嵌套定义:

需要注意的是,调用的外部文件,如果文件内部,存在调用子函数的情况,则文件内的主调函数和被调函数有两种形式,但是必须统一,如下所示:

方式1 方式2 function name function name …… …… …… …… end subfunction name subfunction name …… …… …… …… end 2、嵌套定义:

存在的问题就是:一定要注意变量的命名,避免出现问题。

方式1 方式2 function mainFunc() function mainFunc() …… …… a = myfunc1(); a = myfunc1(); function myfunc1() ... ... end end function myfunc1() …… ... end end

 

三、脚本文件和函数文件 1、脚本文件:

脚本文件可以理解为简单的M文件,脚本文件中的变量都是全局变量。函数文件是在脚本文件的基础之上多添加了一行函数定义行,其代码组织结构和调用方式与对应的脚本文件截然不同。

脚本文件只是将一系列相关的代码结合封装,没有输入参数和输出参数,即不自带参数,也不一定要返回结果。而多数函数文件一般都有输入和输出变量,并见有返回结果。

M脚本文件创建的每个变量都会保存到Matlab工作区,

2、函数文件:

函数文件是以函数声明行“function...”作为开始的,其实质就是用户往MATLAB函数库里边添加了子函数,函数文件中的变量都是局部变量,除非使用了特别声明。函数运行完毕之后,其定义的变量将从工作区间中清除(声明周期结束)。

M函数文件只有输出结果才保存到Matlab工作区中;

注意: (1)函数文件的命名要使用文件内主函数声明的名称,否则出错。现在高版本matlab中文件命名可以与主函数名不一样。 (2)函数内部可以嵌套子函数并为该文件的主函数调用,只需将子函数写在主函数代码后面。 (3)一个函数可以有多个输入输出。如function [y1,y2]=myfun(x1,x2,x3) 一般来说matlab中执行同样的任务使用函数文件比脚本文件的效率高。

参考:

如何在1个Matlab m文件中定义多个函数直接运行

(Matlab基本知识----连载之六)M脚本文件和M函数文件、函数句柄(转,介绍的不错

Matlab中函数和脚本的区别

matlab中同一文件定义子函数的方法(zhuan)



【本文地址】


今日新闻


推荐新闻


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