我有一个txt文件,其中包含由外部程序创建的一堆参数。
让我们考虑一个简单的例子:
input.txt
a= 1
b= 2
c= 3
我可以在matlab 2018a中读取名称和值:
[names, values]=textread('input.txt','%s%f');
因此,名称将是一个3x1单元格数组,其中包含条目a=
,b=
等,而值将是常规的3x1
双精度数组。
在我当前的工作空间中,我想初始化获得的变量(使用相应的名称)并将它们设置为等于相应的值。
在上面的示例中,应该在当前工作空间中创建变量a=1
,b=2
和c=3
。
我不知道该怎么做...
谢谢!
编辑:在我的实际示例中,变量名称可以包含许多字符/数字(按照标准惯例,变量名称始终以字母开头,而不是数字开头),例如
Rcirc1= 30.0
SaveStride= 1000
答案 0 :(得分:2)
您可以结合使用regexp和assignin来获得所需的输出:
%Read data.
data = fileread('input.txt')
%Extract variable name and value in named groups.
s = regexp(data,'(?<var>[A-Z]\w+)\D+(?<val>\d+(?:\.\d+)?)','names');
%Loop over struct s contents to create variables in workspace.
cellfun(@(x,y) assignin('base',x,str2double(y)),{s.var},{s.val})
答案 1 :(得分:2)
文本文件中的分配可以通过MATLAB直接评估。您无需提取它们。为了使每行打印的文本静音,您可以使用evalc
evalc(fileread('input.txt'));