从文本文件中提取或导入两个特定值 - MATLAB

Extract or import two Specific values form Text file - MATLAB

我正在 MATLAB 中解决一个问题,我需要从文本文件中导入两个特定值(突出显示),如图 1 所示。

对应的.txt文件附在下面link (Link)

希望这会奏效。

delimiter = ' ';
startRow = 7;
fileID = fopen(filename,'r');     
formatSpec = '%f%f%[^\n\r]';
dataArray = textscan(fileID, formatSpec,startRow-startRow+1, 'Delimiter', delimiter, 'HeaderLines' ,startRow-1, 'ReturnOnError', false,'MultipleDelimsAsOne',1, 'EndOfLine', '\r\n');
val1 = dataArray{1,1};
val2 = dataArray{1,2};

当您想从文本文件中提取特定值时,您应该始终考虑使用正则表达式。

要获取突出显示的两个值,您可以使用:

raw = fileread('M7_soil_FN_1.txt');
val = regexp(raw,'(\d+)\s+(\d+\.\d+)\s+(?=NPTS)','tokens')

正则表达式表示:

  • (\d+) 匹配数字并捕获。
  • \s+ 匹配空格。
  • (\d+\.\d+)匹配并捕获数字,句号,更多数字。
  • \s+ 匹配空格。
  • (?=NPTS) 积极前瞻以确保接下来是 NPTS。

然后将 val 转换为 double:

val = str2double(val{:})
>>val(1)

    5991

>>val(2)

    0.0050

如果您有兴趣,可以实时查看正则表达式 here