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