我有一个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()
以正确的格式解析数据。