在MATLAB中将调用函数的工作空间暴露给调用函数

时间:2014-09-01 14:36:48

标签: matlab configuration-files

为了简单起见,我在我的应用程序中使用MATLAB脚本作为配置文件。这样我就可以使用函数run将所有变量加载到工作区中。目前,我每次需要加载配置文件时都会编写下面的代码。

configFile = [APP.PROJECT_DIR '/config/app.m'];
    if exist(configFile, 'file') ~= 2
        error('Missing configuration file for APP: [PROJECT ROOT DIR]/configFile/app.m')
    end
    run(configFile);

为了减少行数,我想将上面的代码放在一个独立的函数中。但是,如果我这样做,配置文件中的变量将加载到该函数中而不是加载到调用函数中。我怎样才能将被调用函数的工作空间暴露给调用函数的工作区?

基本上我想要的是run的功能+检查文件是否存在+如果文件不存在则自定义错误消息。

2 个答案:

答案 0 :(得分:2)

一些可能的(相互排斥的)方法:

  • 使函数将这些变量作为输出返回。
  • 将这些变量声明为global
  • 使用脚本而不是函数。那可能是我的选择。
  • 如果以上都不符合您的需求,您可以使用evalinNot good practice,但是。

答案 1 :(得分:1)

您可以将本地工作空间中的数据保存到.mat文件中,并将mat文件名作为已定义函数的输出返回。然后在调用函数中使用load函数。下面给出了提示:

load(userConfig(configFile))

在配置功能的定义中:

function output_args = userConfig(input_args)
...
run(input_args)
output_args = [input_args,'at'];
save(output_args)
end

我认为字符串configFileinput_args函数的userConfig

我只是提供了您可能想要的解决方案,即使我不建议这样做。