最近遇到了一个比较有意思的问题,就是我想通过一个for循环生成10个变量,data1到data10,并保存到10个对应的mat文件里面。刚开始的时候以为挺简单的,结果却尝试了几次都没有成功,直到百度了下,发现了eval这个函数,才解决了这个问题。这里简单的记录一下:
eval函数最常用的形式就是eval(expression),实现的功能就是计算expression表示的代码。举一个简单的例子,当我在命令行输入eval('data = 3;'),MATLAB就会计算表达式“data = 3;”,即生成一个值为3的变量data。如果我们只是想运行上面的代码,其实大可不必使用eval函数,直接在命令行输入data = 3;就可以了。但是假如我想生成10个甚至上百个上千个变量时,eval就会大显神威。
这里举一个简单的例子,比如我们要生成10个变量,data1到data10,并赋值1到10。当我要使用eval函数时,我建议提前生成表达式,这样条例更清晰。按照上面的描述,我这次要生成的表达式就是“datai = i;”,如下图所示,运行脚本文件,我们就顺利地生成了10个变量。
如果想要把结果保存到mat文件里面,只需再添加两行代码即可,如下所示:
转自:MATLAB中变量名如何随循环改变-eval函数 - 知乎 (zhihu.com)