根据另一个文件中的匹配值过滤文本文件

时间:2015-01-13 16:27:23

标签: matlab text merge cygwin multiple-columns

我想根据匹配的时间戳合并cygwin或matlab中的一些文本文件;

我有一个带有一列时间戳的文件:

文件1:

7,
486,
730,
1031,
1331,
1631,
1931,
2231,
...
100000

和文件2;有3列和不同的时间戳(1hz):

1 data1 data2,
2 data1 data2,
3 data1 data2,
4 data1 data2,
....
100000 data1 data2

我想基于匹配的时间戳合并文件,以便保留file1,第1列:

7    data1 data2,
486  data1 data2,
730  data1 data2,
1031 data1 data2,
1331 data1 data2,
...

感谢

1 个答案:

答案 0 :(得分:1)

您必须在Matlab中使用的主要功能是:ismember

它将返回文件2(数据文件)中与文件1的时间戳匹配的时间戳的索引(行号)(仅限时间戳)。

显然,先读取数据,合并,然后写输出文件。

timestamp1 = dlmread('textfile1.txt') ;         %// read timestamp only file
DATA       = dlmread('textfile2.txt') ;         %// read DATA file
timestamp2 = DATA(:,1) ;                        %// Extract timestamp from DATA (optional)

commonIndex = ismember(timestamp2,timestamp1) ; %// Find common timestamps line index in file 2
MergedData = DATA(commonIndex,:) ;              %// build common matrix

dlmwrite('MergedData.txt',MergedData,'Delimiter',' ')   %// write output file