另一种办法是使用IMPORTDATA将整个档案阅读成一个系列的星体(每个电池一行),然后使用, 然后使用SSCANF ,从该单元中提取3项数值:
>> data = importdata( mostly_useless_text.txt ,
); %# 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中将其全部装入一个变数,从而使用大量的记忆。 您可以避免这种情况的发生,在使用循环和功能:
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