统计学中,两个向量的互相关用来表示两个随机矢量X和Y之间的协方差,结果是一个矩阵(元素取值在0-1之间),可以用corrcoef函数计算。
在信号处理领域中,互相关是用来表示两个信号之间相似性的一个度量,通常通过与已知信号比较用于寻找未知信号中的特性。它是两个信号之间相对于时间的一个函数,有时也称为滑动点积,类似于两个函数的卷积。可使用xcorr函数计算,得到的结果是一个序列(cross-correlation sequence),但该函数带'coeff'参数的含义并不是把结果范围限制在0-1之内,而只是让结果序列中特定的值为1(normalizes the sequence so that the auto-correlations at zero lag are identically 1.0),具体处理分几种情况,有关的代码如下:
if ~autoFlag,
% xcorr(x,y)
% Compute autocorrelations at zero lag
cxx0 = sum(abs(x).^2);
cyy0 = sum(abs(varargin{1}).^2);
scale = sqrt(cxx0*cyy0);
c = c./scale;
else
if ~xIsMatrix,
% Autocorrelation case, simply normalize by c[0]
c = c./c(maxlag+1);
else
% Compute the indices corresponding to the columns for which
% we have autocorrelations (e.g. if c = n by 9, the autocorrelations
% are at columns [1,5,9] the other columns are cross-correlations).
[mc,nc] = size(c);
jkl = reshape(1:nc,sqrt(nc),sqrt(nc))';
tmp = sqrt(c(maxlag+1,diag(jkl)));
tmp = tmp(:)*tmp;
cdiv = repmat(tmp(:).',mc,1);
c = c ./ cdiv; % The autocorrelations at zero-lag are normalized to
% one
end
建议你搞清楚自己到底是要计算什么,再选择适当的函数进行计算。