假设两个平稳信号 $\textbf{x}$ 和 $\textbf{y}$ ,如果 $x\left(t+\tau\right)= y\left(t\right)$ ,则可通过互相关求 $\tau$ 。由于信号处理相关知识都蘸酱吃了,理论相关的部分咱们来日方长(我一定可能会补充的)。
XCORR 实现
首先,通过实现 xcorr 函数介绍互相关计算流程:
clc
clear
close
% 实现 xcorr 函数
% 基本设置
T = 1; % [s] 总时间长度
fs = 5000; % [Hz] 采样频率
t = 0:1/fs:T; % [s] 时间坐标
N = length(t); % 信号个数
% 信号生成
tm = [ t(1:N) - T , t(2:N) ]; % 相关结果的时间延迟坐标轴
td1 = 0.2*T; % x 信号时间延迟
td2 = 0.3*T; % y 信号时间延迟
noise = rand(1,2*N); % 生成了两倍时间 T 长度的噪声 [0,1]噪声
x = noise(1+round(td1*fs):N+round(td1*fs))-0.5*ones(1,N);
y = noise(1+round(td2*fs):N+round(td2*fs))-0.5*ones(1,N);
% 求取互相关
z1 = xcorr(x,y); % Matlab 自带函数
[~,I1] = max(abs(z1)); % 模仿 Matlab doc 给出延迟坐标
z2 &#