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 つの信号をクリップするには、最初に s1 を s2 でクリップし、次に s2 を s3 でクリップし、次に s3 を s1 でクリップします。3つの信号の整列

于 2017-10-06T18:46:32.357 に答える