MATLAB:如何从具有特定字符的文本文件中读取数据



我有一个txt文件,其中包含两个单位的随机数据,距离(m)和时间(秒)。例如,txt文件如下所示:

5 metre 
0 sec
10 metre
1 sec
16 metre
2 sec
25 metre
3 sec

我希望能够将所有metres值存储到一个数组中,并将seconds数据存储到另一个数组中。基本上将文本文件根据米/秒单位分成两个数组。

可以使用readtable

我不知道这是否是"正确"的函数,但这是有效的:)

读取数据:

A = readtable('Input.txt','Delimiter',' ','ReadVariableNames',false);

输出会像这样:

A = 
Var1     Var2  
____    _______
 5      'metre'
 0      'sec'  
10      'metre'
 1      'sec'  
16      'metre'
 2      'sec'  
25      'metre'
 3      'sec'  

%// use 'cellfun' to create a mask of which unit corresponds to 'metre'
mask = cellfun(@(x) strcmp(x,'metre'), A.Var2);
%// save the corresponding data in one variable and rest in another
m = A.Var1(mask);
s = A.Var1(~mask);
输出:

>> m
m =
 5
10
16
25
>> s
s =
 0
 1
 2
 3

试试这个:

% Build a dummy txt data
txt = '';
for i=1:100
    txt = sprintf('%s%d metren%d secn',txt,2*i, i);
end
txt = regexprep(txt,'nn','n')
data = sscanf(txt,'%d metren%d secn',[2 Inf])';

regexprep()应该处理意外的双换行,而sscanf()以正确的格式解析数据。

相关内容

  • 没有找到相关文章