Matlab_ eval 批量定义变量

Posted on 2019-03-12 17:01  adgk07  阅读(946)  评论(0编辑  收藏  举报

本文备忘 Matlab 中批量定义变量的方法。

参考:

  [1] matlab中批量赋值与声明变量(eval函数)

  [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