在 scilab 中按名称分配变量

Assign a variable by name in scilab

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

我发现 global 可以定义一个变量的范围,这样我就可以在函数中写入它,但是我还没有找到处理运行时变量名称的方法。

您应该使用 execstr 函数(参见:https://help.scilab.org/docs/5.5.2/en_US/execstr.html

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

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

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

正如@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()