在 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()
鉴于我有一个变量名称字符串矩阵和另一个矩阵中的相应值(均来自 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()