从文本文件中提取或导入两个特定值 - 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。
我正在 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。