如何在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