Matlab中用于同步的自动或交叉相关

时间:2014-05-02 10:06:50

标签: matlab signal-processing

我有一个电机声音的倍数记录,'我想首先同步它们,然后计算它们的sepctogram。我的问题是如何使用自相关或交叉相关来同步它们,我想这样做以确保在频谱中唯一的“我看到的不同”与频率有关,而不是与电机的起始位置或记录。

PS:我知道在Matlab中计算自动和交叉相关,但我不明白如何将它们用于同步目的。

1 个答案:

答案 0 :(得分:2)

一旦您计算了互相关,峰值的位置就表示您需要移动其中一个文件以与另一个文件对齐所需的数量。

例如,如果您有信号A和信号B,并且您在MATLAB中使用xcorr函数:

A = randn(1000,1);
B = circshift(A,round(randn*1000));
[val,ind]=max(abs(xcorr(A,B)));
shift = ind-length(A); % assumes A and B are same length. Otherwise use longer of the two

plot(1:length(A),A);
hold on
plot((1:length(A))+shift,B); % Two should now be aligned

请注意,对于有噪声的信号,这并不是完美的,但如果相关性很好,它应该让它们接近。