在变量中文件的subdir/path中运行Matlab函数(*.m)

在变量中文件的subdir/path中运行Matlab函数(*.m),matlab,function,arguments,Matlab,Function,Arguments,我想运行一个函数“folder/test.m”。此路径位于变量“var_path”中。如何使用参数运行函数?您可以使用 例如: sys_com = ['C:\path\to\matlab.exe ', var_path, ' ', parameter1, ' ', parameter2]; system(sys_com); 第一行将命令创建为字符串(参数应为字符串)。第二行执行该字符串。您可以将dir更改为var\u path,然后作为常规函数运行test。 或者,您可以将var_path添加

我想运行一个函数“folder/test.m”。此路径位于变量“var_path”中。如何使用参数运行函数?

您可以使用

例如:

sys_com = ['C:\path\to\matlab.exe ', var_path, ' ', parameter1, ' ', parameter2];
system(sys_com);

第一行将命令创建为字符串(参数应为字符串)。第二行执行该字符串。

您可以将dir更改为
var\u path
,然后作为常规函数运行
test

或者,您可以将
var_path
添加到路径中,然后运行
test

Matlab不允许包含函数文件(例如,在C/C++中)。实现类似目标有两种可能性:

  • 在脚本执行期间更改文件夹
  • 更改搜索路径,使函数文件对Matlab解释器可见
  • 示例1:

    cur_dir = pwd; % save current directory
    cd(var_path);  % change to directory containing the function
    test(a, b);
    cd(pwd);       % change back to original directory
    
    当然,这可能会产生不必要的副作用,例如,如果您的脚本依赖于当前目录中的其他文件,或者如果您写入文件

    示例2:

    cur_path = path(); % save current path variable
    addpath(var_path); % add function path to Matlab path
    test(a, b);
    setpath(cur_path); % restore original path variable
    

    好主意。这会启动另一个Matlab实例吗?@Deve:是的,一个新实例在这种情况下会产生相当大的计算开销。此外,解析标准输出以获得函数结果可能会变得复杂且容易出错。