限制MATLAB从与运行文件相同的文件夹中调用函数

时间:2014-10-17 05:32:23

标签: matlab function

我正在编写一个脚本(让我们称之为main.m),它调用我编写的函数(让我们称之为myfunc.m)。看来我在MATLAB路径上的不同位置有一些myfunc.m函数。

在寻找自定义函数时,我想以某种方式限制matlab只在我的main.m类所在的文件夹中查找。

例如,如果我有

C:\example\main.m
C:\example\myfunc.m

C:\asd\main.m
C:\asd\myfunc.m

并在文件夹main.m中打开example,当涉及myfunc.m的调用时,它只能调用文件夹C:\example\中的函数。如果我在文件夹main.m中运行C:\asd\,则同样如此。

我希望这是有道理的,谢谢。

1 个答案:

答案 0 :(得分:4)

在短期内,一个相当快速的解决方案是让您将myfunc.m个文件转换为私有函数,这些函数在优先级方面优于普通函数,并且只能由同一父文件夹中的函数调用。

只需将myfunc.m个文件放在名为private的文件夹中:

C:\example\main.m
C:\example\private\myfunc.m

C:\asd\main.m
C:\asd\private\myfunc.m

现在example\private\myfunc.m只能由文件夹example中的内容调用,而\asd\private\myfunc.m只能由文件夹asd中的内容调用。此外,它们的优先级高于其他函数,因此您可以确保始终调用正确的函数。

从长远来看,您可以看一下MATLAB为管理命名空间冲突提供的其他一些更广泛的方法,例如子功能,面向对象的编程和包。

子功能非常简单。软件包并不复杂,但需要考虑如何组织代码(这通常是值得的)。面向对象编程是典型编程风格的一个更大的变化,但对于更大的应用程序来说非常重要。