0

在Matlab我能够夹/修剪使用finddelay音频信号的对(相同频率)如下,以使它们对齐并具有相同的长度:夹子3点的信号与互相关(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的同等界限,我从根本上误解了一些东西。任何人有任何建议?

回答

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点的信号,第一个剪辑S1与S2,那么S2与S3,那么也许S3与S1等等。 alignment of 3 signals