我想根据匹配的时间戳合并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,
...
感谢
答案 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