MATLAB实现两组不同数据的时间对齐/同步

两组不同数据的时间同步

对两组不同数据进行融合的过程中,需要保证两组数据的时间标签的完全对齐的。这里利用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

生成的矩阵格式为: [ D a t a 1 的 行 数 , D a t a 2 的 行 数 , D a t a 1 对 应 的 时 间 , D a t a 2 对 应 的 时 间 ] [Data1的行数,Data2的行数,Data1对应的时间,Data2对应的时间] [Data1Data2Data1Data2]

简单的测试

生成两组不同频率的数据: D a t a 1 = [ 1 : 0.02 : 100 ] T ; D a t a 2 = [ 0.1 : 0.1 : 102 ] T Data1 = [1: 0.02: 100]{^T};Data2 = [0.1: 0.1: 102]^T Data1=[1:0.02:100]TData2=[0.1:0.1:102]T调用函数得到对齐后的矩阵命令行
对齐结果

通过上述结果可以看出,对齐函数基本无误[完].
  • 13
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值