鉴于我有一个变量名字符串矩阵和另一个矩阵中的相应值(都来自csv文件),我如何在工作区中创建具有名称矩阵中的名称和来自价值矩阵?
我找到global
来定义一个变量的范围,以便我可以在函数中写入它,但我还没有找到一种处理运行时变量名的方法。
答案 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()