如何在scilab中访问字符串声明的变量

时间:2016-12-22 04:02:09

标签: scilab

我遇到麻烦就是“P_dot_ij_om_ + ii(i,1)= P_dot_ij(k,2);” 基本上我已经声明矩阵P_dot_ij_om_1 = []从1到i 并在下一行。

我想输入数据,例如P_dot_ij_om_ + II(I,1)= P_dot_ij(K,2); 其中ii是数字。什么是正确的表达。

rows=round(k/360);
i=1;
ii=1;
k=1;
while ii <= rows

     Pdot_names(ii,1)=string("P_dot_ij_om_"+ string(ii));

     disp(Pdot_names(ii))
     execstr(Pdot_names(ii)+'=[]');         // declare indexed matrix

     while i<361

        P_dot_ij_om_+ii(i,1)=P_dot_ij(k,2);
        // P_dot_ij_om_+ii(i,2)=P_dot_ij(k,3);

         disp(k)
         k=k+1;
         i=i+1;
     end
ii=ii+1;


end

1 个答案:

答案 0 :(得分:0)

下面的代码有效,但一般不建议创建字符串变量。有更快,更容易实现的替代方案,参见例如这个帖子:How can I create variables Ai in loop in scilab, where i=1..10

rows = 2;
P_dot_ij = [10,20,30;11,21,31;12,22,32];
i=1;
ii=1;
k=1;
while ii <= rows

    //Pdot_names(ii,1)=string("P_dot_ij_om_"+ string(ii));    The firs 'string' is unnecessary
    Pdot_names(ii,1)="P_dot_ij_om_"+string(ii);    

    disp(Pdot_names(ii))
    execstr(Pdot_names(ii)+'=[]');         // declare indexed matrix

    while i<4

        //P_dot_ij_om_+ii(i,1)=P_dot_ij(k,2);
        execstr("P_dot_ij_om_"+string(ii)+"("+string(i)+",1)=P_dot_ij("+string(k)+",2)");           // P_dot_ij_om_+ii(i,2)=P_dot_ij(k,3);
        execstr("P_dot_ij_om_"+string(ii)+"("+string(i)+",2)=P_dot_ij("+string(k)+",3)");

        disp(k)
        k=k+1;
        i=i+1;
    end
    ii=ii+1;
end

disp(P_dot_ij_om_1,"P_dot_ij_om_1");
disp(P_dot_ij_om_1,"P_dot_ij_om_2");

下次请发布自包含的代码示例,否则我只能猜出kP_dot_ij是什么。