在scilab中按名称分配变量

时间:2015-10-05 16:12:21

标签: scilab

鉴于我有一个变量名字符串矩阵和另一个矩阵中的相应值(都来自csv文件),我如何在工作区中创建具有名称矩阵中的名称和来自价值矩阵?

我找到global来定义一个变量的范围,以便我可以在函数中写入它,但我还没有找到一种处理运行时变量名的方法。

2 个答案:

答案 0 :(得分:1)

您应该使用execstr功能(请参阅:https://help.scilab.org/docs/5.5.2/en_US/execstr.html

例如,使用存储在变量MatrixNames中的矩阵名称和存储在变量MatrixContent中的矩阵内容,您将只需:

execstr(MatrixName(i)+'= MatrixContent');

使用i您想要处理的相应矩阵名称的单元格编号。

答案 1 :(得分:1)

正如@ david-dorchies建议的那样,你应该使用execstr。要确保它们是全局可访问的,请使用全局变量(如果要在函数中执行)。

请参阅下面的示例实现。

funcprot(0);
clear;
function assign_to_globals(names, values)

        for i=1:length(values)
            execstr(sprintf('clearglobal %s; global %s;', names(i), names(i)))
            execstr(sprintf('%s = %s;', names(i), string(values(i))))
        end;

endfunction

function disp_all_globals(names)
    for i=1:(size(names,1)*size(names,2))
        disp(names(i))
        execstr(sprintf('global %s; disp(%s)', names(i), names(i)))
    end;
endfunction

values = list(23,5.6,6/10,"[1,2,3]");
names = ['a','my_long_var_name','c1','my_sub_mat'];

assign_to_globals(names, values)
disp_all_globals(names)

clearglobal()