0

在 Matlab 中,我可以使用 finddelay 剪辑/修剪音频信号对(相同频率),如下所示,以便它们对齐并具有相同的长度:

d12 = finddelay(s1,s2);
if(d12 < 1)
    start1  = -d12+1;
    start2  = 1;
    end1    = length(s1);
    end2    = min(length(s1(-d12+1:end)), length(s2));
else
    start1  = 1;
    start2  = d12+1;
    end1    = min(length(s2(d12+1:end)), length(s1));
    end2    = length(s2);
end

clipped_s1 = s1(start1:end1);
clipped_s2 = s2(start2:end2);

我想对 3 个或更多信号做同样的事情,到目前为止,我试图为信号对取开始/结束界限,即 d12、d23、d31,然后取起始索引的最大值和最小值相应索引的结束索引。但是,它并没有给我 s1、s2、s3 的平等界限,我从根本上误解了一些东西。有人有什么建议吗?

4

1 回答 1

0

所以首先我犯了一个错误,看来,对于 2 个信号,它应该是

d12 = finddelay(t1,t2);
if(d12 < 1)
    start1  = -d12+1;
    start2  = 1;
    len1    = min(length(t1) - start1, length(t2) - start2);
    len2    = min(length(t1) - start1, length(t2) - start2);
    end1    = start1 + len1;
    end2    = start2 + len2;
    %note the suffling of +/- 1
else
    start1  = 1;
    start2  = d12+1;
    len1    = min(length(t1) - start1, length(t2) - start2);
    len2    = min(length(t1) - start1, length(t2) - start2);
    end1    = start1 + len1;
    end2    = start2 + len2;
    %note the suffling of +/- 1
end

然后,要剪辑 3 个信号,首先用 s2 剪辑 s1,然后用 s3 剪辑 s2,然后可能用 s1 剪辑 s3,依此类推。对齐 3 个信号

于 2017-10-06T18:46:32.357 回答