Matlab尝试将脚本作为函数执行

时间:2012-03-22 16:49:06

标签: function matlab eval

我有一个matlab脚本,我们称之为“master.m”,它会加载一个名为“config.m”的文件。 config.m包含master.m中使用的所有变量,因此无需编辑任何代码即可轻松更改它们。问题是,我试图让master.m中的main函数根据用户输入加载config.m。所以基本上我希望用户能够指定要加载的文件的名称。例如,如果config.m被称为testing.m,那么用户可以在matlab提示符下键入:

>> master(testing.m)

它会加载文件。但我无法弄清楚如何正确地做到这一点,我已经研究了eval函数,但它给了我一个错误。这是我现在在master.m中的代码:

function [X,Y] = master(file)
eval(file)

然而,当我在matlab提示符下运行时:

>> master(config.m)  
??? Attempt to execute SCRIPT config as a function:
/home/myusername/config.m

我也试过master('config.m')master('./config.m')master(config)master(config.m),但无效

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

我认为你想要的是:

master('config');

答案 1 :(得分:3)

你几乎拥有它!用单引号括起文件名并删除.m应该可以解决问题。以下适用于Matlab R2011b(Linux),文件master.m和config.m位于同一文件夹中。

master.m:

function X = master( filename )
eval(filename);
X = a^2;
end

config.m:

a = 2;
disp('Testing config.m');

在控制台中:

>> master('config')
Testing config.m
ans =
     4