我有两个信号,我们称它们为'a'和'b'。它们都是几乎相同的信号(从同一输入记录并包含相同的信息),但由于我在两个不同的时间记录了它们,因此'b'被未知量时间偏移。显然,每个信号中都有随机噪声。
目前,我正在使用交叉相关来计算时间偏移,但是我仍然得到了不正确的结果。
这是我用来计算时间偏移的代码:
然而,该函数的结果是一个周期波,而不是随机噪声,因此滞后仍然可能不准确。我想发布绘图的图片,但imgur当前无法合作。
除了交叉相关之外,是否有更准确的计算滞后的方法,或者有没有办法改善交叉相关的结果?
目前,我正在使用交叉相关来计算时间偏移,但是我仍然得到了不正确的结果。
这是我用来计算时间偏移的代码:
function [ diff ] = FindDiff( signal1, signal2 )
%FINDDIFF Finds the difference between two signals of equal frequency
%after an appropritate time shift is applied
% Calculates the time shift between two signals of equal frequency
% using cross correlation, shifts the second signal and subtracts the
% shifted signal from the first signal. This difference is returned.
length = size(signal1);
if (length ~= size(signal2))
error('Vectors must be equal size');
end
t = 1:length;
tx = (-length+1):length;
x = xcorr(signal1,signal2);
[mx,ix] = max(x);
lag = abs(tx(ix));
shifted_signal2 = timeshift(signal2,lag);
diff = signal1 - shifted_signal2;
end
function [ shifted ] = timeshift( input_signal, shift_amount )
input_size = size(input_signal);
shifted = (1:input_size)';
for i = 1:input_size
if i <= shift_amount
shifted(i) = 0;
else
shifted(i) = input_signal(i-shift_amount);
end
end
end
plot(FindDiff(a,b));
然而,该函数的结果是一个周期波,而不是随机噪声,因此滞后仍然可能不准确。我想发布绘图的图片,但imgur当前无法合作。
除了交叉相关之外,是否有更准确的计算滞后的方法,或者有没有办法改善交叉相关的结果?