我有一个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)
,但无效
有什么想法吗?
答案 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