如何在MATLAB中模拟'包含'行为?
在MATLAB中,我可以在一个文件中定义多个函数,只有第一个定义的函数在该文件的外部可见。 或者,我可以将每个函数放在它自己的文件中,并通过路径使它们全部可见。 我正在编写一个菜单驱动的应用程序,其中每个菜单项都运行不同的功能。 目前,这些都在一个大文件中,越来越难以浏览。 我想要做的是将相关功能组放入单独的文件中。
我想我可以做这样的事情,把所有子功能放到一个单独的目录中,然后将目录添加到父函数的路径中,但是这感觉有点混乱和不雅。
任何人都可以提出更好的建议吗?
注意:我对MATLAB 2006最为熟悉,但我正在升级到MATLAB 2009。
一个可以避免修改MATLAB路径的建议是使用私有函数目录。 例如:
假设您在MATLABtemp
目录下有一个名为test.m
的函数(它已经在MATLAB路径中)。 如果test.m
中有本地函数需要放置在它们自己的m文件中,并且只希望test.m
能够访问它们,那么首先要在MATLABtemp
创建一个名为private
的子目录。 然后,将test.m
中的各个本地函数m文件放在这个private
子目录中。
private
子目录不需要被添加到MATLAB路径中(事实上,它不应该被添加到路径中以便正常工作)。 只有private
子目录上方目录中的文件test.m
和其他m文件才能访问它所包含的函数。 使用私有函数,可以有效地模拟本地函数的行为(即有限范围,函数重载等),而不必将所有函数都放在同一个m文件中(对于某些应用程序可能会变得很大)。
也许这样的事情,
function foobar
addpath C:IncludeModuleX
%% Script file residing in ModuleX
some_func();
end
当然,ModuleX在退出foobar后仍将保留在搜索路径中。 如果您想将其设置为默认路径而不重新启动,请添加以下行:
path(pathdef)
有关更多详细信息,请参阅ADDPATH。
您可以使用以“+”开头的子文件夹将功能分隔到命名空间中。
例如:
在文件夹“+ foo”中放置一个函数“bar”
function bar()
print('hello world');
该功能可以用作:
foo.bar() % prints hello world
更多信息可以在这里找到:
MATLAB对名称空间最接近什么?
链接地址: http://www.djcxy.com/p/84181.html上一篇: How do I emulate 'include' behaviour in MATLAB?
下一篇: Exception in thread "main" java.lang.NullPointerException