我怎么从.dat提取特定的行数据的值是变化的文件?
1视图(30天)
显示旧的评论
你好,我有一个大.dat文件(附件),我只是感兴趣与特定值的行约束数据的redesing如下所示。
这是.dat中的数据文件,如下所示:
$ NAME = D_Tstep1_OP_01约束数据
1.95063723 e + 00
改变TOPODRV NAME = M_OP_01美元
15932年
2
1.77575504 e 03
- - - - - -
3.88161658 e-01
17231年
2
1.80259062 e 03
- - - - - -
3.91727572 e-01
15291年
2
- - - - - -
1.13913637 e-02
2.21583925 e + 00
. .
. .
$ NAME = D_Tstep2_OP_01约束数据
3.95063723 e + 00
. .
. .
从上面的.dat文件,我只需要D_Tstep1_OP_01 = 1.95063723 e + 00的数据值90步(如D_Tstep1_OP_01、D_Tstep2_OP_01 ......., D_Tstep90_OP_01)。说我怎么提取数据有不同的分隔符从.dat文件并将其保存在excel中?我需要excel的数据在以下格式:
名称约束数据
D_Tstep1_OP_01
1.95063723 e + 00
D_Tstep2_OP_01
3.95063723 e + 00
. .
. .
D_Tstep90_OP_01
5.95063723 e + 00
%这
是
最后一个值
在
该文件
我很感激你的帮助。提前谢谢你。
0评论
接受的答案
马修•诺伊
2021年9月22日
你好
我写了这个小代码为您服务!
检查它
%的主要代码
[string_out, data_out] = retrieve_data (“Redesign2-0_OP_01.dat”);
C = [{“名字”}{“约束数据”};string_out ' data_out '];
writecell (C,“C_out.xlsx”);
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
函数[string_out, data_out] = retrieve_data(文件名)
fid = fopen(文件名);
tline = fgetl (fid);
%初始化
k = 0;
p = 0;
data_line = [];
而ischar (tline)
k = k + 1;%循环线指数
tmp1 =包含(tline,“约束元数据名称= D_TStep ');
如果tmp1 & & ~ isempty (tline)
p = p + 1;
ind_eq = strfind (tline,“=”);
string_out {p} = (tline (ind_eq + 2:结束);%
data_line = k + 1;
结束
如果~ isempty (data_line) & & k = = data_line
data_out {p} = str2num (tline);%
结束
tline = fgetl (fid);
结束
文件关闭(fid);
结束