【发布时间】:2018-04-06 19:44:06
【问题描述】:
我正在使用 matlab 进行一个项目,我必须在其中比较两个(高阶)Ambisonics 脉冲响应。我计算了 FFT 并绘制了两个信号在频率上的平滑能量:
它们似乎是相关的,但我想找到一个值来估计相似度。我不能使用函数xcorr,因为我的信号是Nx25 而不是Nx1。
假设a 和b 是我的信号,都是8000x25 矩阵:
fs = 48e3;
fft1 = fft(a);
fft2 = fft(b);
l1 = length(a);
l2 = length(b);
% calculating frequencies
f = fs*(0:(l1/2))/l1;
% calculating single sided spectrum for both signals
P1 = 10*log10(abs(fft1).^2);
P1 = P1(1:l1/2+1);
P1(2:end-1) = 2*P1(2:end-1);
P2 = 10*log10(abs(fft2).^2);
P2 = P2(1:l2/2+1);
P2(2:end-1) = 2*P2(2:end-1);
% plotting both spectra
figure; plot(f,smooth(P1,150)); hold on; plot(f,smooth(P2,150)); grid on
所以我每次有 25 个值(假设每个值代表我的信号的一个通道)。所以xcorr 将允许我将一个频道与另一个频道进行比较。我需要做的是将信号作为一个整体进行比较,因为每个通道都有对信号很重要的空间信息。因此,将一个频道与另一个频道进行比较不会让我得出关于相似性的确切陈述。
感谢您就如何比较这些信号提供帮助和建议。
【问题讨论】:
-
您可以添加更多细节,包括代码。请在此处查看如何提出好的问题:stackoverflow.com/help/how-to-ask
标签: matlab signal-processing similarity