我正在编写一个脚本(让我们称之为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\
,则同样如此。
我希望这是有道理的,谢谢。
答案 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为管理命名空间冲突提供的其他一些更广泛的方法,例如子功能,面向对象的编程和包。
子功能非常简单。软件包并不复杂,但需要考虑如何组织代码(这通常是值得的)。面向对象编程是典型编程风格的一个更大的变化,但对于更大的应用程序来说非常重要。