我有很多文本文件,其中有35行标题后跟一个带有图像数据的大矩阵(该信息可以忽略,此刻不需要读取)。我希望能够读取标题行并提取这些行中包含的信息。例如,标题的前几行是..
File Version Number: 1.0
Date: 06/05/2015
Time: 10:33:44 AM
===========================================================
Beam Voltage (-kV) = 13.000
Filament (W) = 4.052
Cond. (-kV) = 8.885
CenterX1 (V) = 10.7
CenterY1 (V) = -45.9
Objective (%) = 71.40
OctupoleX = -0.4653
OctupoleY = -0.1914
Angle (deg) = 0.00
我希望能够打开这个文本文件并阅读创建文件的日期和时间,灯丝功率,聚光器电压,角度等等。并将这些保存在变量中或发送给它们GUI程序上的文本框。
我已经尝试了几件事,但由于我想要提取一些时间的值是在'='之后或在':'之后或者仅仅在''之后,我不知道如何处理这个问题。也许阅读每一行并寻找一个单词的匹配?
非常感谢任何帮助。
谢谢, 亚历
答案 0 :(得分:0)
这并不是特别困难,其中一种方法是按照您的建议逐行解析。像这样:
MAX_LINES_TO_READ = 35;
fid = fopen('input.txt');
lineCount = 0;
dateString = '';
beamVoltage = 0;
while ~eof(fid)
line = fgetl(fid);
lineCount = lineCount + 1;
%//check conditions for skipping loop body
if isempty(line)
continue
elseif lineCount > MAX_LINES_TO_READ
break
end
%//find headers you are interested in
if strfind(line, 'Date')
%//find the first location of the header separator
idx = find(line, ':', 1);
%//extract substring starting from 1 char after separator
%//note: the trim is to get rid of leading/trailing whitespace
dateString = strtrim(line(idx + 1 : end));
elseif strfind(line, 'Beam Voltage')
idx = find(line, '=', 1);
beamVoltage = str2double(line(idx + 1 : end));
end
end
fclose(fid);