eval 函数运用!!
经常会遇到matlab里面有些变量命名其实有一样的规律,,但是不像矩阵这些是可以通过循环来获取的,这个时候就可以利用eval语句了;
首先,假设现在有10个名称类似的变量,road1,road2,road3.,,,road10.如何分别获取这些变量并有利于之后调用呢
用元胞数组结合eval函数:
road={} %创建一个新的元胞矩阵,将每个road1~20的数据放到road(i)中
for i=1:10
road{i}=eval([\'road\',num2str(i)]);% eval是用来执行括号里的expression
end
PS:此段函数并不能运行,因为没有给出真实的10个road数据;重点放在[\'road\',num2str(i)]可以组合变量名
然后,利用eval创建24个t1trj~t24trj的变量,并且每个是一个元胞矩阵
for i=1:24 %将24个变量装载到相同大小的元胞矩阵中
Name=[\'t\',num2str(i),\'trj\'];
eval([Name,\'=cell(10000,1)\';]);
end
x=rand(10,1000);
a={} %创建一个空的胞元
for i=1:10 %将x矩阵分成十个(1,1000 )大小的矩阵放进元胞矩阵a(i)中
name=[\'a\',\'{\',num2str(i),\'}\'];
eval([name,\'=x(i,:)\']);
end