# xcorr
互相关
函数库: TyStatistics
# 语法
r, = xcorr(___;maxlag=nothing)
# 说明
r, = xcorr(x,y) 返回两个离散时间序列的互相关。互相关测量向量 x 和移位(滞后)副本向量 y 的之间的相似性,形式为滞后的函数。如果 x 和 y 的长度不同,函数会在较短向量的末尾添加零,使其长度与另一个向量相同。示例
r, = xcorr(x) 返回 x 的自相关序列。如果 x 是矩阵,则 r 也是矩阵,其中包含 x 的所有列组合的自相关和互相关序列。示例
r, = xcorr(___;maxlag=nothing) 将上述任一语法中的滞后范围限制为从 -maxlag 到 maxlag。示例
r, = xcorr(___;scale=nothing) 还为互相关或自相关指定归一化选项。除 nothing(默认值)以外的任何选项都要求 x 和 y 具有相同的长度。示例
r,lags = xcorr(___) 还返回用于计算相关性的滞后。示例
# 示例
两个向量的互相关
创建向量 x 和向量 y,后者是 x 右移 5 个元素的结果。计算并绘制 x 和 y 的估计互相关。在 x 和 y 的元素完全匹配的滞后值 (-5) 处,出现最大峰值。
using TyPlot
using TyStatistics
n = 0:15;
x = 0.84.^n;
y = circshift(x,5);
c,lags = xcorr(x,y);
stem(lags,c)

向量的自相关
计算并绘制向量 x 的估计自相关。在零滞后时(此时 x 与自身完全匹配),出现最大峰值。
using TyPlot
using TyStatistics
n = 0:15;
x = 0.84.^n;
c,lags = xcorr(x);
stem(lags,c)
归一化的互相关
使用单位峰值计算并绘制向量 x 和 y 的归一化互相关,并指定最大滞后为 10。
using TyPlot
using TyStatistics
n = 0:15;
x = 0.84.^n;
y = circshift(x,5);
c,lags = xcorr(x, y; maxlag=10, scale="normalized")
stem(lags,c)
# 输入参数
x — 输入数组
向量 | 矩阵 | 多维数组
输入数组,指定为向量、矩阵或多维数组。如果 x 是多维数组,则 xcorr 对所有维度按列操作,并将每个自相关和互相关作为矩阵的列返回。
数据类型: Float32 |Float64 |Int8 |Int16 |Int32 |Int64 |Int128 |UInt8 |UInt16 |UInt32 |UInt64 |UInt128 |Bool
复数支持: 是
y — 输入数组
向量 | 矩阵 | 多维数组
输入数组,指定为向量、矩阵或多维数组。
数据类型: Float32 |Float64 |Int8 |Int16 |Int32 |Int64 |Int128 |UInt8 |UInt16 |UInt32 |UInt64 |UInt128 |Bool
复数支持: 是
maxlag — 最大滞后
整数标量
最大滞后,指定为整数标量。如果您指定 maxlag,则返回的互相关序列范围是从 -maxlag 到 maxlag。如果您没有指定 maxlag,则滞后范围等于 2N–1,其中 N 是 x 和 y 中较长一方的长度。
数据类型: Float32 |Float64 |Int8 |Int16 |Int32 |Int64 |Int128 |UInt8 |UInt16 |UInt32 |UInt64 |UInt128 |Bool
scale — 归一化选项
nothing (默认) | "biased" | "unbiased" | "normalized" | "coeff"
归一化选项,指定为下列各项之一。
- nothing - 原始、未缩放的互相关。当 x 和 y 长度不同时,'none' 是唯一有效的选项。
- "biased" - 互相关的有偏估计:
- "unbiased" - 互相关的无偏估计:
- "normalized" 或 "coeff" - 对序列进行归一化,使零滞后时的自相关等于 1:
# 输出参数
r — 互相关或自相关
向量 | 矩阵
lags — 滞后索引
向量
滞后索引,以向量形式返回。
# 详细信息
互相关或自相关
xcorr 的结果可以解释为两个随机序列之间的相关性估计,也可以解释为两个确定性信号之间的确定相关性。
两个联合平稳随机过程
其中 −∞ < n < ∞,星号表示复共轭,E 是期望值运算符。xcorr 只能估计序列,因为实际上,在无限长随机过程的一个实现中只有有限的部分可用。
默认情况下,xcorr 计算未经归一化的原始相关性:
输出向量 c 包含的元素由下式给出:
一般情况下,相关性函数需要归一化来生成准确的估计。您可以通过使用输入参数 scale 来控制相关性的归一化。