別の方法は、 IMPORTDATAを使用してファイル全体を文字列のセル配列(セルごとに1行)に読み込み、STRMATCHを使用して文字列を含むセルを検索し、SSCANF'I_NEED_THIS_STRING'
を使用してそのセルから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を使用して一度に1行ずつロードおよび解析します。
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