xcov Computes discrete auto or cross covariance Syntax [c, lagindex] = xcov(x) [c, lagindex] = xcov(x, y) [c, lagindex] = xcov(.., maxlags) [c, lagindex] = xcov(.., maxlags, scaling) Parameters x a vector of real or complex floating point numbers. y a vector of real or complex floating point numbers. The default value is x. maxlags a scalar with integer value greater than 1. The default value is n. Where n is the maximum of the x and y vector length. scaling a character string with possible value: "biased", "unbiased", "coeff", "none". The default value is "none". c a vector of real or complex floating point numbers with same orientation as x. lagindex a row vector, containing the lags index corresponding to the c values. Description c=xcov(x) computes the un-normalized discrete covariance: {\begin{matrix}C_k = \sum_{i=0}^{n-k-1} {(x_{i+k}-\mu_x})({x_i-\mu_x})^{*} , k \geq 0 \mu_x=\sum_{i=0}^{n-1}{x_i} C_k = C^{*}_{-k}, k \leq -1\end{matrix}.}$and return in c the sequence of covariance lags Ck=-n:n where n is the length of x xcov(x,y) computes the un-normalized discrete cross covariance:${\begin{matrix}C_k = \sum_{i=1}^{n-k} {(x_{i+k}-\mu_x})*({y_i}-\mu_y)^{*}, k \geq 0 \mu_x=\sum_{i=0}^{n-1}{x_i} \mu_y=\sum_{i=0}^{n-1}{y_i} C_k = C^{*}_{-k}, k \leq -1\end{matrix}.}\$ and return in c the sequence of cross covariance lags Ck=-n:n where n is the maximum of x and y length's. If the maxlags argument is given xcov returns in c the sequence of covariance lags Ck=-maxlags:maxlags. If maxlags is greater than length(x), the first and last values of c are zero. The scaling argument describes how C(k) is normalized before being returned in c: "biased": c=C/n. "unbiased": c=C./(n-(-maxlags:maxlags)). "coeff": c=C/(norm(x)*norm(y)). Remark The corr function computes the "biased" covariance of x and y and only return in c the sequence of covariance lags Ck≥0 . Method This function computes C using xcorr(x-mean(x),y-mean(y),...). Examples t = linspace(0, 100, 2000); y = 0.8 * sin(t) + 0.8 * sin(2 * t); [c, ind] = xcov(y, "biased"); plot(ind, c) t = linspace(0, 100, 2000); y = 0.8 * sin(t) + 0.8 * sin(2 * t); [c, ind] = xcov(y, "biased"); plot(ind, c) See also xcorr corr fft History 5.4.0 xcov added.