假设变量FileName包含一个字符串,例如Name1。如何使用名称Name1创建变量?
此页面上的示例4似乎相似,但我无法让它工作。这是正确的方法吗? http://se.mathworks.com/help/matlab/ref/genvarname.html
答案 0 :(得分:3)
您在“示例4”中看到的内容被认为是错误的编程风格。该文档还包含to avoid eval。
的部分我建议使用动态字段名称来实现类似的结构。
filename='name1';
mydata=struct();
mydata.(genvarname(filename))=load(filename);
除了更好的性能外,您还可以在处理多个文件时获得其他功能。例如structfun
将函数应用于您的所有数据,或fieldnames
以获取所有文件名。
答案 1 :(得分:1)
对于您想要做的事情,eval
功能适合您:
FileName = 'Name1';
eval([FileName ' = 18;']); % Executes "Name1 = 18;"
现在变量Name1
已创建,其值为18
。
函数genvarname
有不同的用途,即生成可接受的和非冲突的变量名,而不是变量本身。