如何在MATLAB中从另一个m文件调用m文件而不添加其文件夹路径? 我不想通过
添加其文件夹addpath(genpath(''))
答案 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)
功能的所有可见性规则均基于文件夹。如果你想拥有不同的可见度,你必须将你的功能放在不同的文件夹中。
通常,避免重复的函数名称只是将所有源文件添加到搜索路径是有效的。为避免重复的函数名称,您可能需要查看包。