本文备忘 Matlab 中批量定义变量的方法。
参考:
[2] MathWorks eval
缘起与说明
当变量名称多到一定程度时,变量名的管理就很复杂:起什么名,怎么编号,怎么批量调用,怎么批量改代码。面向对象的编程方法诚然能够简化代码,但在一些要求代码效率的场景中,我们还是需要面向过程的。当要处理的变量名称有规律时,可以使用 for 循环与 eval 函数处理。
eval(expression) [ouput1,...,outputN] = eval(expression)
eval 函数的输入变量是一个字符串,该字符串遵从 Matlab 的语法,是一个可执行的 Matlab 命令语句。
例子
name = { 'lili', 'bob', 'susan' }; para = { 'age', 'Mat' }; % name = [ "lili", "bob", "susan" ]; % para = [ "age", "Mat" ]; for n = 1:3 for k = 1:100 eval([char(name(n)),'_',char(para(1)),'_',int2str(k),'=0;']) eval([char(name(n)),'_',char(para(2)),'_',int2str(k),'=zeros(2,2);']) % eval([name(n),'_', para(1),'_',int2str(k),'=0;']) % eval([name(n),'_', para(2),'_',int2str(k),'=zeros(2,2);']) end end
双引号只在 2017a 以后的版本中被支持,所以“字符串矩阵”的代码被注释掉了。
END