matlab主函数如何调用子函数?

发布网友 发布时间:2022-04-23 15:28

我来回答

1个回答

热心网友 时间:2023-10-08 12:03

1、当你没有把你编辑好的子函数放入正确的文件夹时,不管你输入的程序是否有错,当你执行时,系统都会提示“没有定义”,这个时候就是没有子函数文件放到主函数库文件夹中,如图所示。

2、就算知道了,这个问题那么主函数库文件夹在什么地方找呢?首先,输入“edit conv”这个“conv”是我准备编辑的子函数的主函数名,每个人所需的主函数名都不一样,这里可以不要那么在意。然后就可以打开相应的主函数,这是可以看到主函数所在文件夹位置。如图所示,※记住这个位置。

3、然后进行子函数的编辑,首先新建一个新的m文件,如图操作所示,然后在编辑框中输入所要的子函数,如图所示,例如我就是输入了convnem的函数,这是conv的子函数。然后点击保存。

4、接下来,在刚刚第二步“conv”所在文件位置,将位置记录下来,将子函数的文件保存到主函数所在的文件夹即可,然后在重新的将你所需的程序(含有子函数的)输入并且执行,这时你会发现原来提示的错误没有了,那么这时调用自己添加的子函数成功了。以后有相应的子函数都可以通过这样的方法进行添加子函数。

同一个脚本文件中若有多个函数,则分为主函数和子函数,每个M文件都要求有一个主函数,它最先出现在该m文件中,与文件同名。主函数可以与该m文件外的其他函数相互作用,只要该文件所在目录属于matlab搜索路径;子函数subfunctions的执行范围:只能与该m文件中的其他函数相互作用,却不能被m文件之外的函数调用,子函数作为功能函数只是执行主函数的一部分工作。

Matlab- 主函数和子函数间接传递变量

在matlab一般可以通过函数的输入和输出接口来传递变量,但是有的时候,我们因为函数已经写好,并在比较多的脚本中被调用,此时再修改输入接口的工作量比较大,如果可以通过其它方式传递变量,就可以省去很多的工作量。初步想了一下,可以通过两种形式实现:

1、在主函数中定义全局变量

但是这里需要注意的是全局变量y的定义必须包括在主函数的代码段中,如果放在主函数之外,或者定义在子函数中就无法被整个进程中的代码全局识别。

2、利用新的子函数定义来间接引入全局变量。

调用规则:

外层的嵌套函数的直接内层,例如varScope1可以调nestfun1,而nestfun1可以调用nestfun2,但varScope1不能调nestfun2;

有相同父函数的同层嵌套函数(本例不存在);

内层的函数可以调用任何外层的函数,例如,nestfun2可以调用nestfun1和varScope1。

其他函数调用时,只能调最外面一层的函数(varScope1),而不能调用调nestfun1和nestfun2。

变量作用域:

通常,函数的工作区只对其自身可见,其他函数不能访问。但对于嵌套函数而言,处于内层的函数可以访问外层函数的工作区(例如,nestfun2可以访问varScope1的局部变量x),反之则不可以。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com