matlab调用规则变量名eval函数

时间:2023-01-07 10:31:44
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