请不要这样做!
你会发现MATLAB数组(数字或单元格)将让你以更快、更可读的方式做同样的事情。例如,如果A1到A10包含标量,则使用:
A = 0 (10);没有必要,只是快得多
为i = 1:10
(我)=%一些方程
结束
现在,当你说Ai时,请提到A(i)。如果每个Ai包含一个向量或矩阵,每个都有不同的大小,你想要使用单元格数组,这正是为了以下目的:
为i = 1:10
{我}= 1:我;
结束
注意,每个A{i}包含一个不同大小的矩阵。注意下标要使用花括号!
另一种鱼与熊掌兼得的方法是使用结构而不是单元格数组。结构的字段可以是您想要的变量名。你可以用动态字段引用来索引它们。例如:
名称= {“弗雷德”“山姆”“基地”};
为印第安纳州= 1:长度(名称)
年代。(名字{印第安纳})=魔法(长度(名字{印第安纳}));
结束
在这种情况下,最终得到的变量s是一个结构,它包含由存储在单元格数组名称中的字符串指定的字段。
现在,如果您仍然希望使用动态生成的名称创建变量,则需要使用EVAL。使用EVAL,您可以使用MATLAB命令生成将执行您想要的操作的字符串。例如,eval('A=10')的效果与A=10相同,eval(['A' 'B' '=10'])的效果与AB=10相同,只是eval方法的执行速度要慢得多。所以在循环中,你可以使用:
为i = 1:10
eval (sprintf (' % d =(1:我)”,我));
结束
注意这是多么模糊。此外,这可能会在你的代码中导致难以排除的问题,特别是当你试图动态地创建一个与函数同名的变量时:
函数y = mysin (x)
eval (“罪= 5;”);
y = sin (x);
调用这个函数以“y = mysin(1)“不会返回y = 5(罪恶的第一个元素变量由EVAL),它将返回1的正弦,因为解析函数时没有变量命名罪和罪的用法在最后一行是解析函数调用内置的罪。一个名为sin的变量在运行时存在的事实是不相关的;解析时间“decision”优先。
重复:不要在运行时使用EVAL创建变量,除非您有很好的理由,例如有人给您一个MAT文件,其中包含2000个名为A1428的变量。即使在这种情况下,你也可以避免EVAL:
%假设mat文件example1。垫子包含2000个变量,A1到A2000
S =负载(“example1.mat”);
% S现在是一个包含2000个字段的结构数组,从S. a1到S. a2000。
%要访问A1428,请使用:
x1 = S.A1428;
%如果你想要访问的变量的“索引”被存储在一个变量中:
k = 1428;
x2 = s (sprintf (“% d '、k));
x3 = s ([“一个”, num2str (k)]);
6个评论
直接链接到这个评论
//www.tatmou.com/matlabcentral/answers/57445-faq-how-can-i-create-variables-a1-a2-a10-in-a-loop#comment_119289
直接链接到这个评论
//www.tatmou.com/matlabcentral/answers/57445-faq-how-can-i-create-variables-a1-a2-a10-in-a-loop#comment_119289
直接链接到这个评论
//www.tatmou.com/matlabcentral/answers/57445-faq-how-can-i-create-variables-a1-a2-a10-in-a-loop#comment_447574
直接链接到这个评论
//www.tatmou.com/matlabcentral/answers/57445-faq-how-can-i-create-variables-a1-a2-a10-in-a-loop#comment_447574
直接链接到这个评论
//www.tatmou.com/matlabcentral/answers/57445-faq-how-can-i-create-variables-a1-a2-a10-in-a-loop#comment_447577
直接链接到这个评论
//www.tatmou.com/matlabcentral/answers/57445-faq-how-can-i-create-variables-a1-a2-a10-in-a-loop#comment_447577
直接链接到这个评论
//www.tatmou.com/matlabcentral/answers/57445-faq-how-can-i-create-variables-a1-a2-a10-in-a-loop#comment_447580
直接链接到这个评论
//www.tatmou.com/matlabcentral/answers/57445-faq-how-can-i-create-variables-a1-a2-a10-in-a-loop#comment_447580
直接链接到这个评论
//www.tatmou.com/matlabcentral/answers/57445-faq-how-can-i-create-variables-a1-a2-a10-in-a-loop#comment_448259
直接链接到这个评论
//www.tatmou.com/matlabcentral/answers/57445-faq-how-can-i-create-variables-a1-a2-a10-in-a-loop#comment_448259
直接链接到这个评论
//www.tatmou.com/matlabcentral/answers/57445-faq-how-can-i-create-variables-a1-a2-a10-in-a-loop#comment_681603
直接链接到这个评论
//www.tatmou.com/matlabcentral/answers/57445-faq-how-can-i-create-variables-a1-a2-a10-in-a-loop#comment_681603
登录评论。