使用MATLAB执行文件还是调用将文件放置在另一个文件夹中的函数?

| 尝试使用Google搜索,但找不到任何东西。 我当前的MATLAB文件夹中有一些文件和文件夹。 这些文件夹之一叫做\'Map \',它有一个\'map1.m \'文件,我想从当前MATLAB文件夹中的代码中调用该文件。 在我的代码中,我不能这样称呼它:
/Map/map1;
但我可以这样做:
cd Map;
map1;
cd ..;
以上方法似乎不正确。有更优雅的方法吗?     
已邀请:
        您可以使用
run
命令来运行文件,而无需手动将文件夹添加到路径中,该命令专门用于此类情况。从文档中:   run是一种便利功能,用于运行当前不在路径中的脚本。 您将函数/脚本称为
run /Map/map1 
如果要仅通过输入函数名称而不使用完整(或相对)路径来运行函数/脚本,则应将文件夹添加到路径中。 正如@mutzmatron指出的那样,您不能使用
run
来调用带有输入/输出参数的函数。因此,除非它是没有输入/输出参数的脚本/函数,否则使用
run
将不起作用,您必须将文件夹添加到路径中。 编辑 出于良好的编码习惯,要在函数具有输入/输出的情况下工作,从路径中添加/删除文件夹是正确的方法。所以对于你来说
addpath /Map
...

map1;

...
rmpath /Map
重要的是,您的函数调用夹在
addpath
rmpath
命令之间。如果两个文件夹中都有相同名称的功能,则应将其紧紧夹在中间,即在前一行和后一行之间,以免发生冲突。     
        就像gnovice建议的那样,只需将所有这些目录添加到带有ѭ7的Matlab路径即可。然后,您将能够正常调用这些函数,并且它们对于which(),help(),depfun()和其他Matlab元编程命令都是可见的。您可以在
startup.m
文件中放置
addpath()
调用,以使它们在每次启动Matlab时自动出现。 每次使用addpath / map1()/ rmpath更改路径都有一些缺点。 这是对性能的打击,因为您要为每个调用添加路径操作。 不同目录中的功能将无法相互看到。 编写和调试函数将更加困难,因为函数执行的路径上下文将动态更改,并且与在编辑器和基本工作区中看到的内容不同。 如果调用的函数出错,则需要其他错误处理代码来确保正确还原路径。 如果您想在某个时候部署此代码,则这不适用于Matlab编译器。 自己使用run()或cd()很丑陋,因为相对路径会出现问题。 如果您确实想分隔子目录中的功能,以使它们彼此不能“看到”,则可以通过在其名称前放置一个“ +”来使这些目录命名空间,然后限定该功能用名称空间(如
Map.map1()
)进行调用。     
        只是为了促进改变道路的辩论... 一种使它“更安全”的方法是编写
% start of my code: create function handles 
% to the functions I need:
try
   cd Map
   map1_func = @map1;
catch mexception
end
cd ..
这将尝试保留当前目录,并在另一个目录中获得该函数的句柄。 唯一的事情是,如果
map1
依赖于
Map
目录中的其他功能,则此方法将不起作用。     

要回复问题请先登录注册