另一种方法是使用IMPORTDATA将整个文件读入字符串单元格数组(每个单元格一行),然后使用STRMATCH查找包含字符串的单元格'I_NEED_THIS_STRING'
,然后使用SSCANF从该单元格中提取 3 个值:
>> data = importdata('mostly_useless_text.txt','\n'); %# Load the data
>> index = strmatch('I_NEED_THIS_STRING',data); %# Find the index of the cell
%# containing the string
>> values = sscanf(data{index},'I_NEED_THIS_STRING = %f %f %f') %# Read values
values =
1.0e+003 *
1.2345
6.7890
1.2345
如果文件在您感兴趣的行之前或之后可能有很多无用的文本,那么您可能会通过将其全部加载到变量中来消耗 MATLAB 中的大量内存。您可以通过使用循环和函数FGETS一次加载和解析一行来避免这种情况:
fid = fopen('mostly_useless_text.txt','r'); %# Open the file
newLine = fgets(fid); %# Get the first line
while newLine ~= -1 %# While EOF hasn't been reached
if strmatch('I_NEED_THIS_STRING',newLine) %# Test for a match
values = sscanf(newLine,'I_NEED_THIS_STRING = %f %f %f'); %# Read values
break %# Exit the loop
end
newLine = fgets(fid); %# Get the next line
end
fclose(fid); %# Close the file