我正在使用scilab。基本上我想和这个人一样Create 'n' matrices in a loop 或者这个人http://www.mit.edu/~pwb/cssm/matlab-faq_4.html#evalcell
答案不是scilab,我无法管理它在scilab中做同样的事情。有人可以帮助我。
答案 0 :(得分:1)
如果我的意图正确,您希望使用动态变量名称(=变量名称不是硬编码,而是在执行期间生成)。这是对的吗?
正如其他人已经在链接的帖子中指出的那样(以及许多其他地方,例如here),一般情况下不建议这样做。如果您的变量具有相同的大小和类型,例如,使用矢量或矩阵(2D或3D)会更好。如果
A1=[1,2];
A2=[3,4];
更好的方式:
A(1,1:2)=[1,2];
A(2,1:2)=[3,4];
通过这种方式,您可以将变量存储在一个更有效的矩阵形式中,它可以更快地执行(循环很慢!),并且通常作为独立变量更灵活(您可以定义它们的某个子集,并执行矩阵运算等。 )
但是,如果您真的想这样做,请使用execstr
:
clear; //clear all variables
for i=1:10
execstr("A"+string(i)+"=[]"); //initialize Ai as empty matrix
execstr("B"+string(i)+"=0"); //initialize Bi as 0
execstr("C"+string(i)+"=zeros(2,3)"); //initialize Ci as 2*3 zero matrix
execstr("D"+string(i)+"=1:i"); //initialize Di as different length vectors
end
disp(A1,"A1");
disp(B2,"B2");
disp(C3,"C3");
disp(D1,"D1");
disp(D5,"D5");
如果变量名仅在显示结果时很重要,则可以使索引显示为变量名的一部分,例如:
E=0.1:2:8.1; //vector with 4 elements
disp(E,"E");
for j=1:4
mprintf("\nE%i = %.1f",j,E(j)); //appears as 4 different variables on the screen
end