如何在MATLAB中将数字连接到变量名?

7 variables matlab numbers

我有一个变量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}或其他.

除非你有充分的理由这样做,否则你最好制作一个单元格数组,结构数组,向量或其他东西.


JS *_* Ng 8

试试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数据类型,如果你需要动态变量命名.