我有一个大文本文件(~3500行),其中包含来自仪器的输出数据。这包括来自不同测量的重复输入,其格式如下:
* LogFrame Start *
variablename1:value
variablename2:value
...
variablename35:value
* LogFrame End *
每个逻辑框包含35个变量。从这些我想提取两个,'VName'和'EMGMARKER'并将相关的值放在matlab数组的列中(即数组应该是(VName,EMGMARKER),然后我可以将其与另一个输出文件中的数据相关联我已经在matlab数组中了。我不知道从哪里开始为了从这个文件中提取变量,因此到目前为止我在互联网上的搜索都没有成功。对此的任何建议都将非常感激。
答案 0 :(得分:0)
您可以使用textscan:
C = textscan(file_id,'%s %f');
然后你像这样提取感兴趣的变量:
VName_indices = strcmp(C{1},'VName:');
VName = C{2}(VName_indices);
答案 1 :(得分:0)
如果变量名称,那么' VName'和' EMGMARKER' ,总是一样的,你可以只读取文件并搜索包含它们的行并从那里提取数据。我不知道它们包含哪些值,因此在提取它们时可能不得不使用单元格而不是数组。
fileID = fopen([target_path fname]); % open .txt file
% read the first line of the specified .txt file
current_line = fgetl(fileID);
counter = 1;
% go through the whole file
while(ischar(current_line))
if ~isempty(strfind(current_line, VName))
% now you find the location of the white space delimiter between name and value
d_loc = strfind(current_line,char(9));% if it's tab separated - so \t
d_loc = strfind(current_line,' ');% if it's a simple white space
variable_name{counter} = strtok(current_line);% strtok returns everything up until the first white space
variable_value{counter} = str2double(strtok(current_line(d_loc(1):end)));% returns everything form first to second white space and converts it into a double
end
% same block for EMGMARKER
counter = counter+1;
current_line = fgetl(fileID);% next line
end
您对EMGMARKER执行相同的操作,并且您的单元格包含您需要的数据。