Matab:将文本文件中的某些行复制到另一个文件中



我有300个具有类似结构的文件。我对每个文件的第82行和第90行很感兴趣。

第82行为:
span 1=-0.193,1.980

第90行为:
span 9=0.000,557.000

我想从相邻的第82行和第90行复制最后一个数字,并从每个文件中附加这些值,如下所示:

输出文件:

1.980 557.000
2.568 687.500
1.158 496.030
……

有人能帮我吗?如果我可以将82行和90行分别复制到新文件和下面的其他文件中,也可以这样做:

span 1=-0.1931.980
span9=0.0000557.000

span 1=-0.193,2.568
span 9=0.0000687.500

span 1=-0.193,1.158
span 9=0.000,496.030
……

我们可以使用textscanheaderlines来跳转到所需的行。

格式规范span %d = %f, %f告诉textscan给我们{1}中的span id以及{2}{3}中的span值。它假定第82行和第90行的格式严格如问题中所述(即span x = y, z(。

该代码扫描1行两次(首先在82行,然后在90行(。或者,你也可以扫描9行一次(一次扫描82-90行(,然后索引到这9行。

row1 = 82; % row of span 1
row9 = 90; % row of span 9
files = dir('/path/to/data/*.dat'); % change to real path
result = nan(length(files), 2); % preallocate
for file = files
fpath = fullfile(file.folder, file.name);
fid = fopen(fpath);

format = 'span %d = %f, %f'; % assume `span x = y, z`
lines = 1 % scan 1 line twice (we could also scan 9 lines at once and index the output)
span1 = textscan(fid, format, lines, 'headerlines', row1 - 1);
span9 = textscan(fid, format, lines, 'headerlines', row9 - row1);

if (span1{1} == 1) && (span9{1} == 9) % verify span id
result(1, :) = [span1{3} span9{3}];
end

fclose(fid);
end
csvwrite('result.csv', result);

相关内容

  • 没有找到相关文章

最新更新