matlab - 使用文件中的名称初始化变量
问题描述
我有一个 txt 文件,其中包含由外部程序创建的一堆参数。
让我们考虑一个简单的例子:
输入.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
解决方案
您可以使用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})
推荐阅读
- ubuntu - 重启时Fail2ban禁止IP消失
- javascript - 无法从子类访问父类属性 - Javascript
- javascript - 从数字数组生成对象,其中值将是随机颜色
- r - 如何在 r 中将栅格添加到很好地覆盖土地并且没有间隙的传单地图?
- c# - 内插变量
- java - 删除所有项目后列表正在返回项目
- axon - 如何启动跟踪事件处理器的正确重置
- nginx - php7.2 + nginx + 内存缓存。未检索到 memcache 密码子目录中的 style.css 和 script.js
- c# - Azure 通知中心静态实例或重新创建
- arrays - Angular - 通过按钮显示数组列表中的隐藏值