線性代數 如何求協方差矩陣

2021-06-19 05:47:41 字數 1199 閱讀 2444

x、y 是兩個隨機變數,x、y 的協方差 cov(x, y) 定義為:

其中:

矩陣中的資料按行排列與按列排列求出的協方差矩陣是不同的,這裡預設資料是按行排列。即每一行是乙個observation(or sample),

那麼每一列就是乙個隨機變數。

協方差矩陣:

協方差矩陣的維度等於隨機變數的個數,即每乙個 observation 的維度。在某些場合前邊也會出現 1 / m,而不是 1 / (m - 1).

舉個例子,矩陣 x 按行排列:

其中:

注意:有時候在書上或者網上會看到這樣的公式,協方差矩陣 σ:

這裡之所以會是 x * x' 是因為原始資料集 x 是按列排列的,即:

另外在 opencv 文件中關於計算協方差矩陣的 calccovarmatrix 函式的說明我覺得是有問題的,

在正常的 cv_covar_normal 狀態下它給出的 cov = scale * x * x',而這個定義僅僅是在資料按列排列下才有的,即 cv_covar_cols.

url:

matlab **:

clear; clc;

% data are stored as rows.

x = [1 2 3;

3 1 1];

y = x;

[rows, cols] = size(x);

% get mean of each dimension(each column).

meanmatrix = mean(x);

% x - mean.

x = x - ones(rows, 1) * meanmatrix;

% get the cov matrix.

covmatrix = 1 / (rows - 1) * (x' * x)

% the given 'cov' function

cov(y)

線性代數 矩陣求逆

include stdafx.h include include stdio.h void matrixprint double arr,const int row,const int col double matrixinverse double arr in,const int n void m...

矩陣 Matrices 線性代數

矩陣 在數學中,矩陣 matrix 是乙個按照長方陣列排列的複數或實數集合 矩陣相加 通常的矩陣加法被定義在兩個相同大小的矩陣 矩陣乘法 矩陣和向量的乘法 如圖 m n 的矩陣乘以 n 1 的向量,得到的是 m 1 的向量 矩陣乘法 m n 矩陣乘以 n o 矩陣,變成 m o 矩陣。矩陣乘法的性質...

線性代數 矩陣相乘

線性代數 矩陣相乘1 矩陣相乘 2 include 3using namespace std 45 6int main 7 矩陣c 結果矩陣 13 cout 請輸入矩陣a的行數和列數 14 cin am an 15 cout 請輸入矩陣b的行數和列數 16 cin bm bn 17if an bm ...