如何直接从MATLAB中的另一个m文件调用m文件而不添加其文件夹路径

时间:2016-02-02 11:28:43

标签: matlab

如何在MATLAB中从另一个m文件调用m文件而不添加其文件夹路径? 我不想通过

添加其文件夹
addpath(genpath(''))

2 个答案:

答案 0 :(得分:3)

类似于MATLAB内置run脚本的功能,您可以cd进入辅助路径,执行您的功能,然后返回上一个目录。

一个小例子:

% testcode.m
function [output] = testcode(fullfunctionpath, A, B)
[pathname, functionName] = fileparts(fullfunctionpath);
olddir = cd(pathname);

output = feval(functionName, A, B);
cd(olddir);
end

% .\test\testing.m
function [output] = testing(A, B)
output = A + B;
end

通过电话:

C = testcode('C:\testcode-matlab\test\testing.m', 1, 2);

将返回

C =

     3

请注意,此方法没有错误处理,也没有检查路径定义中已存在的重复项。如果被调用的函数不存在于目标文件夹中但存在于路径中,则MATLAB路径中的函数仍将被执行。有关详细信息,请参阅:Function Precedence Order

答案 1 :(得分:1)

功能的所有可见性规则均基于文件夹。如果你想拥有不同的可见度,你必须将你的功能放在不同的文件夹中。

通常,避免重复的函数名称只是将所有源文件添加到搜索路径是有效的。为避免重复的函数名称,您可能需要查看包。