MATLAB實現兩組不同資料的時間對齊/同步
阿新 • • 發佈:2018-12-17
兩組不同資料的時間同步
對兩組不同資料進行融合的過程中,需要保證兩組資料的時間標籤的完全對齊的。這裡利用MATLAB實現兩組資料的時間標籤對齊,其中要求資料Data1的取樣頻率大於資料Data2的取樣頻率。
function SynMatrix = TimeSyn2Data(Data1, Data2) % Data1: N Rows & 1 Column; Data2: M Rows & 1 Column % Assume: N >= M & Data1(1) <= Data2(1) & Data1(end) >= Data2(end) k1 = 1; k2 = size(Data2,1); k3 = 2; if Data2(1,1) < Data1(1,1) while Data2(k1,1) < Data1(1,1) k1 = k1 + 1; Index1 = k1; end else Index1 = 1; end if Data2(end,1) > Data1(end,1) while Data2(k2,1) > Data1(end,1) k2 = k2 - 1; Index2 = k2; end else Index2 = size(Data2,1); end N = size(Data1, 1); M = Index2 - Index1 + 1; SynMatrix = zeros(M, 4); for i = 1 : Index2 - Index1 + 1 Index3 = i + Index1 - 1; if Data2(Index3,1) == Data1(1,1) SynMatrix(i,:) = [1, Index3, Data1(1,1), Data2(Index3,1)]; elseif Data2(Index3,1) == Data1(end,1) SynMatrix(i,:) = [N, Index3, Data1(N,1), Data2(Index3,1)]; else for j = k3 : N -1 vec1 = abs(Data2(Index3,1) - Data1(j-1,1)); vec2 = abs(Data2(Index3,1) - Data1(j,1)); vec3 = abs(Data2(Index3,1) - Data1(j+1,1)); if vec2 <= vec1 && vec2 <= vec3 SynMatrix(i,:) = [j, Index3, Data1(j,1), Data2(Index3,1)]; end end end end end
生成的矩陣格式為:
簡單的測試
生成兩組不同頻率的資料:呼叫函式得到對齊後的矩陣