gpt4 book ai didi

matlab - 为什么使用 DFT 的相关性会给出不直观的结果?

转载 作者:行者123 更新时间:2023-12-02 05:07:44 26 4
gpt4 key购买 nike

我试图通过 Matlab 中的 DFT(数字傅里叶变换)使用相关性来比较 2 个信号的相似程度,但相关函数给出的结果并不是真正可预测的。例如,如果我比较那两对信号:

  • 相关性 1 和 2
  • 相关性 3 和 4(自相关)

MATLAB figure screenshot

我预计“corr 3 和 4”情况下的相关峰值高于“corr 1 和 2”情况。

我也曾尝试使信号“平均为零”,但这没有帮助。

这是预期的结果还是我错过了一些预处理等?

最佳答案

您需要规范化您的数据轨迹 - 即在关联之前将它们除以各自的积分。以下代码演示了当您规范化数据轨迹时,自相关确实为您提供了更大的值:

%# producing your data
trace1=(abs(linspace(-64,64,128))<20)*200;
trace2=trace1-(abs(linspace(-64,64,128))<10)*50;
figure;
subplot(321);
plot(trace1);
subplot(322);
plot(trace2);
subplot(323);
plot(xcorr(trace1,trace2))
title('unnormalized cross-correlation');
subplot(324);
plot(xcorr(trace2,trace2))
title('unnormalized autocorrelation');
%
%# what you should be doing:
subplot(325);
plot(xcorr(trace1/sum(trace1(:)),trace2/sum(trace2(:))))
title('normalized cross-correlation');
subplot(326);
plot(xcorr(trace2/sum(trace2(:)),trace2/sum(trace2(:))))
title('normalized autocorrelation');

导致

figure screenshot - produced using the code above

我放大了峰值以显示归一化自相关具有比归一化互相关更高的峰值。

关于matlab - 为什么使用 DFT 的相关性会给出不直观的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9154067/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com