# Documentation

### This is machine translation

Translated by
Mouseover text to see original. Click the button below to return to the English verison of the page.

# cov

## Syntax

• ``C = cov(A)``
example
• ``C = cov(A,B)``
example
• ``C = cov(___,w)``
example
• ``C = cov(___,nanflag)``
example

## Description

example

````C = cov(A)` returns the covariance. If `A` is a vector of observations, `C` is the scalar-valued variance.If `A` is a matrix whose columns represent random variables and whose rows represent observations, `C` is the covariance matrix with the corresponding column variances along the diagonal.`C` is normalized by the number of observations`-1`. If there is only one observation, it is normalized by 1.If `A` is a scalar, `cov(A)` returns `0`. If `A` is an empty array, `cov(A)`returns `NaN`.```

example

````C = cov(A,B)` returns the covariance between two random variables `A` and `B`. If `A` and `B` are vectors of observations with equal length, `cov(A,B)` is the `2`-by-`2` covariance matrix.If `A` and `B` are matrices of observations, `cov(A,B)` treats `A` and `B` as vectors and is equivalent to `cov(A(:),B(:))`. `A` and `B` must have equal size.If `A` and `B` are scalars, `cov(A,B)` returns a `2`-by-`2` block of zeros. If `A` and `B` are empty arrays, `cov(A,B)` returns a `2`-by-`2` block of `NaN`.```

example

````C = cov(___,w)` specifies the normalization weight for any of the previous syntaxes. When ```w = 0``` (default), `C` is normalized by the number of observations`-1`. When `w = 1`, it is normalized by the number of observations.```

example

````C = cov(___,nanflag)` specifies a condition for omitting `NaN` values from the calculation for any of the previous syntaxes. For example, `cov(A,'omitrows')` will omit any rows of `A` with one or more `NaN` elements.```

## Examples

collapse all

Create a 3-by-4 matrix and compute its covariance.

```A = [5 0 3 7; 1 -5 7 3; 4 9 8 10]; C = cov(A) ```
```C = 4.3333 8.8333 -3.0000 5.6667 8.8333 50.3333 6.5000 24.1667 -3.0000 6.5000 7.0000 1.0000 5.6667 24.1667 1.0000 12.3333 ```

Since the number of columns of `A` is 4, the result is a 4-by-4 matrix.

Create two vectors and compute their 2-by-2 covariance matrix.

```A = [3 6 4]; B = [7 12 -9]; cov(A,B) ```
```ans = 2.3333 6.8333 6.8333 120.3333 ```

Create two matrices of the same size and compute their 2-by-2 covariance.

```A = [2 0 -9; 3 4 1]; B = [5 2 6; -4 4 9]; cov(A,B) ```
```ans = 22.1667 -6.9333 -6.9333 19.4667 ```

Create a matrix and compute the covariance normalized by the number of rows.

```A = [1 3 -7; 3 9 2; -5 4 6]; C = cov(A,1) ```
```C = 11.5556 5.1111 -10.2222 5.1111 6.8889 5.2222 -10.2222 5.2222 29.5556 ```

Create a matrix and compute its covariance, excluding any rows containing `NaN` values.

```A = [1.77 -0.005 3.98; NaN -2.95 NaN; 2.54 0.19 1.01] ```
```A = 1.7700 -0.0050 3.9800 NaN -2.9500 NaN 2.5400 0.1900 1.0100 ```
```C = cov(A,'omitrows') ```
```C = 0.2964 0.0751 -1.1435 0.0751 0.0190 -0.2896 -1.1435 -0.2896 4.4104 ```

## Input Arguments

collapse all

Input array, specified as a vector or matrix.

Data Types: `single` | `double`

Additional input matrix, specified as a vector or matrix. `B` must be the same size as `A`.

Data Types: `single` | `double`

Normalization weight, specified as one of these values:

• `0` — The output is normalized by the number of observations`-1`. If there is only one observation, it is normalized by 1.

• `1` — The output is normalized by the number of observations.

Data Types: `single` | `double`

`NaN` condition, specified as one of these values:

• `'includenan'` — include all `NaN` values in the input prior to computing the covariance.

• `'omitrows'` — omit any row of input containing one or more `NaN` values prior to computing the covariance.

• `'partialrows'` — omit rows containing `NaN` only on a pairwise basis for each two-column covariance calculation.

Data Types: `char`

## Output Arguments

collapse all

Covariance, specified as a scalar or matrix.

• For single matrix input, `C` has size `[size(A,2) size(A,2)]` based on the number of random variables (columns) represented by `A`. The variances of the columns are along the diagonal. If `A` is a row or column vector, `C` is the scalar-valued variance.

• For two-vector or two-matrix input, `C` is the `2`-by-`2` covariance matrix between the two random variables. The variances are along the diagonal of `C`.

collapse all

### Covariance

For two random variable vectors A and B, the covariance is defined as

`$\mathrm{cov}\left(A,B\right)=\frac{1}{N-1}\sum _{i=1}^{N}{\left({A}_{i}-{\mu }_{A}\right)}^{*}\left({B}_{i}-{\mu }_{B}\right)$`

where μA is the mean of A, μB is the mean of B, and `*` denotes the complex conjugate.

The covariance matrix of two random variables is the matrix of pairwise covariance calculations between each variable,

`$C=\left(\begin{array}{cc}\mathrm{cov}\left(A,A\right)& \mathrm{cov}\left(A,B\right)\\ \mathrm{cov}\left(B,A\right)& \mathrm{cov}\left(B,B\right)\end{array}\right).$`

For a matrix `A` whose columns are each a random variable made up of observations, the covariance matrix is the pairwise covariance calculation between each column combination. In other words, $C\left(i,j\right)=\mathrm{cov}\left(A\left(:,i\right),A\left(:,j\right)\right)$.

### Variance

For a random variable vector A made up of N scalar observations, the variance is defined as

`$V=\frac{1}{N-1}\sum _{i=1}^{N}|{A}_{i}-\mu {|}^{2}$`

where μ is the mean of A,

`$\mu =\frac{1}{N}\sum _{i=1}^{N}{A}_{i}.$`

Some definitions of variance use a normalization factor of N instead of N-1, which can be specified by setting `w` to `1`. In either case, the mean is assumed to have the usual normalization factor N.

### Tall Array Support

This function supports tall arrays with the limitations:

• For the syntax `C = cov(X,Y)`, the inputs `X` and `Y` must have the same size, even if they are vectors.

• The option `'partialrows'` is not supported.