Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

xcov

互协方差

说明

示例

c = xcov(x,y) 返回两个离散时间序列的互协方差。互协方差测量向量 x 和移位(滞后)副本向量 y 的之间的相似性,形式为滞后的函数。如果 xy 的长度不同,函数会在较短向量的末尾添加零,使其长度与另一个向量相同。

示例

c = xcov(x) 返回 x自协方差序列。如果 x 是矩阵,则 c 是矩阵,其列包含 x 所有列组合的自协方差和互协方差序列。

示例

c = xcov(___,maxlag) 将上述任一语法中的滞后范围设置为从 -maxlagmaxlag

示例

c = xcov(___,scaleopt) 还为互协方差或自协方差指定归一化选项。除 'none'(默认值)以外的任何选项都要求输入 xy 具有相同的长度。

示例

[c,lags] = xcov(___) 还返回用于计算协方差的滞后。

示例

全部折叠

创建一个由随机数组成的向量 x 和一个向量 y,后者是 x 右移 3 个元素的结果。计算并绘制 xy 的估计互协方差。在 xy 的元素完全匹配的滞后值 (-3) 处,出现最大峰值。

rng default
x = rand(20,1);
y = circshift(x,3);
[c,lags] = xcov(x,y);
stem(lags,c)

Figure contains an axes object. The axes object contains an object of type stem.

创建一个 20×1 随机向量,然后计算并绘制估计的自协方差。在零滞后时(此时向量与自身完全相等),出现最大峰值。

rng default
x = rand(20,1);
[c,lags] = xcov(x);
stem(lags,c)

Figure contains an axes object. The axes object contains an object of type stem.

计算并绘制 -10m10 时高斯白噪声的估计的自协方差 c(m)。将序列归一化,使其在零滞后时为单位 1。

rng default
x = randn(1000,1);
maxlag = 10;
[c,lags] = xcov(x,maxlag,'normalized');
stem(lags,c)

Figure contains an axes object. The axes object contains an object of type stem.

创建一个由两个信号组成的信号,这两个信号彼此循环移位 50 个样本。

rng default
shft = 50;
s1 = rand(150,1);
s2 = circshift(s1,[shft 0]);
x = [s1 s2];

计算并绘制自协方差和互协方差序列的有偏估计。输出矩阵 c 的形式为四个列向量,满足 c=(cs1s1cs1s2cs2s1cs2s2)。由于循环移位,cs1s2 在 -50 和 +100 处有最大值,cs2s1 在 +50 和 -100 处有最大值。

[c,lags] = xcov(x,'biased');
plot(lags,c)
legend('c_{s_1s_1}','c_{s_1s_2}','c_{s_2s_1}','c_{s_2s_2}')

Figure contains an axes object. The axes object contains 4 objects of type line. These objects represent c_{s_1s_1}, c_{s_1s_2}, c_{s_2s_1}, c_{s_2s_2}.

输入参数

全部折叠

输入数组,指定为向量、矩阵或多维数组。如果 x 是多维数组,则 xcov 对所有维度按列操作,并将每个自协方差和互协方差作为矩阵的列返回。

数据类型: single | double
复数支持:

输入数组,指定为向量。

数据类型: single | double
复数支持:

最大滞后,指定为整数标量。如果您指定 maxlag,则返回的互协方差序列范围是从 -maxlagmaxlag。默认情况下,滞后范围等于 2N–1,其中 N 是输入 xy 中较长一方的长度。

数据类型: single | double

归一化选项,指定为下列各项之一。

  • 'none' - 原始、未缩放的互协方差。当输入 xy 长度不同时,'none' 是唯一有效的选项。

  • 'biased' - 互协方差的有偏估计。

  • 'unbiased' - 互协方差的无偏估计。

  • 'normalized''coeff' - 对序列进行归一化,使零滞后时的自协方差等于 1。

输出参数

全部折叠

互协方差或自协方差,以向量或矩阵形式返回。

如果 xM × N 矩阵,则 xcov(x) 返回 (2M – 1) × N2 矩阵,其中包含 x 各列的自协方差和互协方差。如果您指定最大滞后 maxlag,则输出 c 的大小为 (2 × maxlag + 1) × N2

例如,如果 S 有三列,S=(x1x2x3),则 C = xcov(S) 的结果的形式为

c=(cx1x1cx1x2cx1x3cx2x1cx2x2cx2x3cx3x1cx3x2cx3x3).

滞后索引,以向量形式返回。

详细信息

全部折叠

互协方差和自协方差

xcov 计算其输入的均值,减去均值,然后调用 xcorr

xcov 的结果可以解释为两个随机序列之间的协方差估计,也可以解释为两个确定性信号之间的确定性协方差。

两个联合平稳随机过程(xn 和 yn 的真正互协方差序列是去除均值后的序列的互相关,

ϕxy(m)=E{(xn+mμx)(ynμy))},

其中 μx 和 μy 是两个平稳随机过程的均值,星号表示复共轭,E 是期望值运算符。xcov 只能估计序列,因为实际上,在无限长随机过程的一个实现中只有有限的部分可用。

默认情况下,xcov 计算未经归一化的原始协方差:

cxy(m)={n=0Nm1(xn+m1Ni=0N1xi)(yn1Ni=0N1yi),m0,cyx(m),m<0.

输出向量 c 包含的元素由下式给出:

c(m)=cxy(mN),m=1,,2N1.

协方差函数需要归一化来正确估计函数。您可以通过使用输入参数 scaleopt 来控制相关性的归一化。

参考

[1] Orfanidis, Sophocles J. Optimum Signal Processing: An Introduction. 2nd Edition. New York: McGraw-Hill, 1996.

[2] Larsen, Jan. “Correlation Functions and Power Spectra.” November, 2009. https://www2.imm.dtu.dk/pubdb/edoc/imm4932.pdf

扩展功能

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

另请参阅

| | |