提取或导入两个特定值形式的文本文件-MATLAB

时间:2018-07-24 04:50:16

标签: matlab textscan

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

figure 1

相应的.txt文件附加在以下链接(Link

2 个答案:

答案 0 :(得分:0)

希望这会起作用。

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};

答案 1 :(得分:0)

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

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

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