我有一个变量a = 1
.我想生成一个表单的变量名称:
variableNumber
Run Code Online (Sandbox Code Playgroud)
所以在这个例子中,我想要
a1
a2
a3
Run Code Online (Sandbox Code Playgroud)
作为变量.我怎样才能做到这一点?
Mat*_*oug 19
我对这个问题的回答是"你确定你真的想这么做吗?"
如果您有一系列这样的变量,那么您将不得不想出一种方法来引用所有这些变量,这可能意味着EVAL或其他类似的变量.
如果你知道你将存储的所有内容都是标量,你可以将它们全部存储在一个向量中:
a(1) = 1;
a(2) = 2;
a(3) = 3;
Run Code Online (Sandbox Code Playgroud)
如果你没有标量怎么办?
a{1} = 1;
a{2} = 'Doug';
a{3} = [1 2 3 4];
Run Code Online (Sandbox Code Playgroud)
然后你可以将它们称为{1}或其他.
除非你有充分的理由这样做,否则你最好制作一个单元格数组,结构数组,向量或其他东西.
试试genvarname
.
varname = genvarname(str)
Run Code Online (Sandbox Code Playgroud)
是使用的基本语法.MATLAB文档提供了使用此函数和排除列表的详细示例(用于确保唯一变量名称).您将不得不使用eval
或其他功能(例如assignin
,在前面的答案中提到)来使用此变量名称.
要完全回答这个问题,
varnamelist = genvarname({'a','a','a','a','a'});
for l=1:length(varnamelist)
eval([varnamelist{l} '= l^2']);
end
Run Code Online (Sandbox Code Playgroud)
当然,有更有效的方法来组合输入列表genvarname
,这是一个练习;)
如果您担心性能,请注意eval
可能会大大减慢脚本/功能; 我个人建议使用struct或cell数据类型,如果你需要动态变量命名.