導航:首頁 > 編程語言 > 協方差矩陣c語言代碼

協方差矩陣c語言代碼

發布時間:2023-05-20 04:51:29

① 協方差矩陣的計算

詳解協方差與協方差矩陣
協方差的定義

對於一般的分布,如肢直接代入E(X)之類的就可以計算出來了,但真給你一個具體數值的分布,要計算協方差矩陣,根據這個公式來計算,還真不容易反應過來。網上值得參考的資料也不多,這里用沖耐一個例子說明協方差矩陣是怎麼計算出來的吧。
記住,X、Y是一個列向量,它表示了每種情況下每個樣本可能出現的數。比如給定

用中文來描述,就是:
協方差(i,j)=(第i列的所有元素-第i列的均值)*(第j列的所有元素-第j列的均值)
這里只有X,Y兩列,所以得到的協方差矩陣是2x2的矩陣,下面分別求出每一個元素:

所以,按照定義,給定的4個二維樣本的協方差矩陣為:

-0.3333 4.0000
可以看出,matlab計算協方差過程中還將元素統一縮小了3倍。所以,協方差的matlab計算公式為:
** 協方差(i,j)=(第i列所有元素-第i列均值)渣判世*(第j列所有元素-第j列均值)/(樣本數-1)**

② 大學求協方差矩陣

求解協方差矩陣的一般步驟如下:

1、從樣本中計算每個變數的平均值。

2、構建一個矩陣,其中每個元素都是變數之間的協方差。矩陣的對角線上是每個變數的方差,而其他元素是兩個變數之間的協方差。矩陣可以表示為:

cov(X1,X1) cov(X1,X2) ... cov(X1,Xn)

cov(X2,X1) cov(X2,X2) ... cov(X2,Xn)

... ... ... ...

cov(Xn,X1) cov(Xn,X2) ... cov(Xn,Xn)

3、將矩陣的對角線上的元素替換為每個變數的方差。方差可以通過將每個變數的平方差除以 樣本數得出。

4、將其他元素替換為它們對應的協方差值。協方差可以通過計算每對變數的平均值之積,再減去它們的聯合平均值得出。

cov(Xi,Xj) = Σ((Xi-μi) * (Xj-μj)) / (n-1)

其中,Xi和Xj是第i個和第j個變數的取值,μi和μj分別是它們的平均值,n是樣本數。Σ表示對所有樣本值的求和。

3、構建一個n × n的矩陣,其中每個元素都是變數之間的協方差。

4、將矩陣的對角線上的元素替換為每個變數的方差。方差的計算公式為:

var(Xi) = Σ((Xi-μi)²) / (n-1)

其中,Xi是第i個變數的取值,μi是它的平均值,n是樣本數。Σ表示對所有樣本值的求和。

5、返回協方差矩陣,矩陣的對角線上是每個變數的方差,而其他元素是兩個變數之間的枝跡協手搭譽方差。

③ c++實現計算圖像協方差矩陣

opencv的cvCalcCovarMatrix函數是用來計算圖像協方差矩陣的。

④ 求助:對於STC12C5A60S2單片機,如何用pca實現定時中斷

程序說明:
y = pca(mixedsig),程序中mixedsig為 n*T 階混合數據矩陣,n為信號個數,T為采樣點數, y為 m*T 階主分量矩陣。

程序設計步驟:
1、去均值
2、計扒數算協方差矩陣及其特徵值和特徵向量
3、計算協方差矩陣的特徵值大於閾值的個數
4、降序排列特徵值
5、去掉較小的特徵值
6、去掉較大鬧滲的特徵值(一般沒有這一步)
7、合並選擇的特徵值
8、選擇相應的特徵值和特徵向量
9、計算白化矩陣
10、提取主分量

程序代碼

%程序說明:y = pca(mixedsig),程序中mixedsig為 n*T 階混合數據矩陣,n為信號個數,T為采樣點數
% y為 m*T 階主分量矩陣。

function y = pca(mixedsig)
if nargin == 0
error('You must supply the mixed data as input argument.');
end
if length(size(mixedsig))>2
error('Input data can not have more than two dimensions. ');
end
if any(any(isnan(mixedsig)))
error('Input data contains NaN''s.');
end

%——————————————去均值————————————
meanValue = mean(mixedsig')';
mixedsig = mixedsig - meanValue * ones(1,size(meanValue,2));
[Dim,NumofSampl] = size(mixedsig);
oldDimension = Dim;
fprintf('Number of signals: %d\n',Dim);
fprintf('Number of samples: %d\n',NumofSampl);
fprintf('Calculate PCA...');
firstEig = 1;
lastEig = Dim;
covarianceMatrix = cov(mixedsig',1); %計算協方差矩陣
[E,D] = eig(covarianceMatrix); %計算協方差矩陣的特徵值和特徵向量

%———計算協方差矩陣的特徵值大於閾值的個數lastEig———
rankTolerance = 1e-5;
maxLastEig = sum(diag(D)) >rankTolerance;
lastEig = maxLastEig;

%——————————降序排列特徵值——————————
eigenvalues = flipud(sort(diag(D)));

%—————————去掉較小的特徵值——————————
if lastEig <oldDimension
lowerLimitValue = (eigenvalues(lastEig) + eigenvalues(lastEig + 1))/2;
else
lowerLimitValue = eigenvalues(oldDimension) - 1;
end
lowerColumns = diag(D) > lowerLimitValue;

%—————去掉較大的特徵值(一般沒有這一步)—液此脊—————
if firstEig > 1
higherLimitValue = (eigenvalues(firstEig - 1) + eigenvalues(firstEig))/2;
else
higherLimitValue = eigenvalues(1) + 1;
end
higherColumns = diag(D) < higherLimitValue;

%—————————合並選擇的特徵值——————————
selectedColumns =lowerColumns & higherColumns;

%—————————輸出處理的結果信息—————————
fprintf('Selected[ %d ] dimensions.\n',sum(selectedColumns));
fprintf('Smallest remaining (non-zero) eigenvalue[ %g ]\n',eigenvalues(lastEig));
fprintf('Largest remaining (non-zero) eigenvalue[ %g ]\n',eigenvalues(firstEig));
fprintf('Sum of removed eigenvalue[ %g ]\n',sum(diag(D) .* (~selectedColumns)));

%———————選擇相應的特徵值和特徵向量———————
E = selcol(E,selectedColumns);
D = selcol(selcol(D,selectedColumns)',selectedColumns);

%——————————計算白化矩陣———————————
whiteningMatrix = inv(sqrt(D)) * E';
dewhiteningMatrix = E * sqrt(D);

%——————————提取主分量————————————
y = whiteningMatrix * mixedsig;

%——————————行選擇子程序———————————
function newMatrix = selcol(oldMatrix,maskVector)
if size(maskVector,1)~ = size(oldMatrix,2)
error('The mask vector and matrix are of uncompatible size.');
end
numTaken = 0;
for i = 1:size(maskVector,1)
if maskVector(i,1) == 1
takingMask(1,numTaken + 1) == i;
numTaken = numTaken + 1;
end
end
newMatrix = oldMatrix(:,takingMask);

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/lillllllll/archive/2010/02/21/5315382.aspx

⑤ 誰知道「協方差矩陣」

在統計學 與 概率論中, 協方差矩陣 是一個矩陣,其每個元素是各個向量元素之間的方差。這是從標量隨機變數到高維度隨機向量的自然推廣。

在統計學 與 概率論中, 協方差矩陣 是一個矩陣,其每個元素是各個向量元素之間的方差。這是從標量隨機變數到高維度隨機向量的自然推廣。假設 X 是以 n 個標量隨機變數組成的列向量,並且<math>\mu_k</math> 是其第k個元素的期望值, 即, <math>\褲物mu_k = \mathrm{E}(X_k)</math>, 協方差矩陣然後被定義為:

<math>
\Sigma=\mathrm{E} \left[

\left( \textbf{X} - \mathrm{E}[\textbf{X}] \right) \left( \textbf{X} - \mathrm{E}[\textbf{X}] \right)^\top
\right] </math>

<math>
= \begin{bmatrix}

\mathrm{E}[(X_1 - \mu_1)(X_1 - \mu_1)] & \mathrm{E}[(X_1 - \mu_1)(X_2 - \mu_2)] & \cdots & \mathrm{E}[(X_1 - \mu_1)(X_n - \mu_n)] \\ \\ \mathrm{E}[(X_2 - \mu_2)(X_1 - \mu_1)] & \mathrm{E}[(X_2 - \mu_2)(X_2 - \mu_2)] & \cdots & \mathrm{E}[(X_2 - \mu_2)(X_n - \mu_n)] \\ \\ \vdots & \vdots & \ddots & \vdots \\ \\ \mathrm{E}[(X_n - \mu_n)(X_1 - \mu_1)] & \mathrm{E}[(X_n - \mu_n)(X_2 - \mu_2)] & \cdots & \mathrm{E}[(X_n - \mu_n)(X_n - \mu_n)]
\end{bmatrix} </math>

矩陣中的第<math>(i,j)</math>個元素是<math>X_i</math>與<math>X_j</math>的協方差. 這個概念是對於標量隨機變數方差的一般化推廣。

[編輯]術語與符號分歧
協方差矩陣有不同的術語。有些統計學家,沿用了概率學家威廉·費勒的說法,把這個矩陣稱之為隨機向量<math>X</math>的方差(Variance of random vector X),這是從一維隨機變數方差到高維隨機向量的自然推廣。另外一些則把它稱為協方差矩陣(Covariance matrix),因為它是隨機向量里頭每個標量元素的協方差的矩陣。不幸的是,這兩種術語帶來了一定程度上的沖突:

標准記號:

<math>
\operatorname{var}(\textbf{X}) = \mathrm{E} \left[

(\textbf{X} - \mathrm{E} [\textbf{X}]) (\textbf{X} - \mathrm{E} [\textbf{X}])^\top
\right] </math>

另 標准記號(與上邊的記號不幸沖突):

<胡租液math>
\operatorname{cov}(\textbf{X}) = \mathrm{E} \left[

(\textbf{X} - \mathrm{E}[\textbf{X}]) (\textbf{X} - \mathrm{E}[\textbf{X}])^\top
\right] </math>

又 標准記型差號:

<math>
\operatorname{cov}(\textbf{X},\textbf{Y}) = \mathrm{E} \left[

(\textbf{X} - \mathrm{E}[\textbf{X}]) (\textbf{Y} - \mathrm{E}[\textbf{Y}])^\top
\right] </math> (兩個隨機向量的"互協方差(cross covariance)")

頭兩個術語彼此沖突,第一個與第三個彼此切合。第一個記號可以在威廉·費勒的廣受推崇的兩本概率書中找到。

[編輯]性質
<math>\Sigma=\mathrm{E} \left[ \left( \textbf{X} - \mathrm{E}[\textbf{X}] \right) \left( \textbf{X} - \mathrm{E}[\textbf{X}] \right)^\top \right]</math> 與<math> \mu = \mathrm{E}(\textbf{X})</math> 滿足下邊的基本性質:

<math> \Sigma = \mathrm{E}(\mathbf{X X^\top}) - \mathbf{\mu}\mathbf{\mu^\top} </math>
<math> \operatorname{var}(\mathbf{a^\top}\mathbf{X}) = \mathbf{a^\top} \operatorname{var}(\mathbf{X}) \mathbf{a} </math>
<math> \mathbf{\Sigma} \geq 0 </math>
<math> \operatorname{var}(\mathbf{A X} + \mathbf{a}) = \mathbf{A} \operatorname{var}(\mathbf{X}) \mathbf{A^\top} </math>
<math> \operatorname{cov}(\mathbf{X},\mathbf{Y}) = \operatorname{cov}(\mathbf{Y},\mathbf{X})^\top</math>
<math> \operatorname{cov}(\mathbf{X_1} + \mathbf{X_2},\mathbf{Y}) = \operatorname{cov}(\mathbf{X_1},\mathbf{Y}) + \operatorname{cov}(\mathbf{X_2}, \mathbf{Y})</math>
若 <math>p = q</math>,則有<math>\operatorname{cov}(\mathbf{X} + \mathbf{Y}) = \operatorname{var}(\mathbf{X}) + \operatorname{cov}(\mathbf{X},\mathbf{Y}) + \operatorname{cov}(\mathbf{Y}, \mathbf{X}) + \operatorname{var}(\mathbf{Y})</math>
<math>\operatorname{cov}(\mathbf{AX}, \mathbf{BX}) = \mathbf{A} \operatorname{cov}(\mathbf{X}, \mathbf{X}) \mathbf{B}^\top</math>
若<math>\mathbf{X}</math> 與<math>\mathbf{Y}</math> 是獨立的,則有<math>\operatorname{cov}(\mathbf{X}, \mathbf{Y}) = 0</math>
<math> \Sigma = \Sigma^\top </math>

其中 <math>\mathbf{X}, \mathbf{X_1}</math> 與<math>\mathbf{X_2}</math> 是隨機<math>\mathbf{(p \times 1)}</math>向量, <math>\mathbf{Y}</math> 是隨機<math>\mathbf{(q \times 1)}</math>向量, <math>\mathbf{a}</math> 是<math>\mathbf{(p \times 1)}</math> 向量, <math>\mathbf{A}</math> 與<math>\mathbf{B}</math> 是<math>\mathbf{(p \times q)}</math> 矩陣。

盡管協方差矩陣很簡單,可它卻是很多領域里的非常有力的工具。它能導出一個變換矩陣,這個矩陣能使數據完全去相關(decorrelation)。從不同的角度看,也就是說能夠找出一組最佳的基以緊湊的方式來表達數據。(完整的證明請參考瑞利商)。這個方法在統計學中被稱為主成分分析(principal components analysis),在圖像處理中稱為Karhunen-Loève 變換(KL-變換)。

[編輯]復隨機向量
均值為<math>\mu</math>的復隨機標量變數的方差定義如下(使用共軛復數):

<math>
\operatorname{var}(z) = \operatorname{E} \left[

(z-\mu)(z-\mu)^{*}
\right] </math>

其中復數<math>z</math>的共軛記為<math>z^{*}</math>.

如果<math>Z</math> 是一個復列向量,則取其共軛轉置,得到一個方陣:

<math>
\operatorname{E} \left[

(Z-\mu)(Z-\mu)^{*}
\right] </math>

其中<math>Z^{*}</math>為共軛轉置, 它對於標量也成立,因為標量的轉置還是標量.

[編輯]估計
多元正態分布的協方差矩陣的估計的推導非常精緻. 它需要用到譜定義以及為什麼把標量看做<math>1 \times 1</math>矩陣的trace更好的原因. 參見協方差矩陣的估計.

[編輯]外部連接
Covariance Matrix at Mathworldde:Kovarianzmatrix
en:Covariance matrix fr:Matrice de variance-covariance pl:Macierz kowariancji ru:Ковариационная матрица

http://define.cnki.net/define_result.aspx?searchword=%E5%8D%8F%E6%96%B9%E5%B7%AE%E7%9F%A9%E9%98%B5

⑥ 協方差矩陣怎麼算

協方差矩陣的計算公式是cov(x,y)=EXY-EX*EY。

首先,緩罩我們需要了解協方差矩陣的重要性,協方差矩陣Cov(xi,xj)的每個元素表示隨機變數xi和xj的協方差,對角元素等於向量本身的方差;

協方差矩陣的維數等於隨機變數的數目,即每個觀測值的維數,在某些情況下,1/m將出現在其前面,而不是1/(m-1);

協方差矩陣定義,按行排列數據得到的協方差矩陣不同於按行排列的數據得到的,這里,默認數據按行排列,也就是說,每一行是一個觀察值(或樣本),那麼每一列是一個隨機變數。

⑦ numpy.cov()計算協方差矩陣

矩陣中的數據按行排列與按列排列求出的協方差矩陣是不同的,這汪褲裂里默認數據是按行排列的,即每一行是一個sample,那麼每一列就是一個隨機變數,

協方差困閉矩陣:

numpy.cov() 計算協方差矩陣為按列計算,舉純漏個例子,

則每個維度的平均值為

將 的每一列減去平均值

其中:

計算協方差矩陣

參考

⑧ 求協方差矩陣

求協方差矩陣時飢雀,需要先確定原始數據矩陣的形狀,例如是行向量、列向量或二維矩陣。如果是行向量或列向量的原始數據,則可以使用下爛段早面的公式計算出協方差矩陣:
∑ cov(X,Y) = 1/N[(x1-μx)(y1-μy)+(x2-μx)(y2-μy)+...+(xn-μx)(yn-μy)]
其中,x1, x2,..., xn表示行/列向量的元素值,燃歷而 μx 和 μy 分別表示x 和 y 的均值。

閱讀全文

與協方差矩陣c語言代碼相關的資料

熱點內容
pc桌面壁紙文件夾 瀏覽:473
微信怎麼添加群 瀏覽:781
40歲男人適合的微信名 瀏覽:925
編程里比例怎麼打 瀏覽:215
蘋果12兩個app如何分屏 瀏覽:592
ps下載完不是壓縮文件 瀏覽:362
電腦中的個人文件包括什麼 瀏覽:572
網路連接一般什麼密碼 瀏覽:199
java定時器quartz實例 瀏覽:259
稻殼excel文件太大怎麼弄 瀏覽:901
文件里的視頻如何保存到相冊 瀏覽:428
手機百度雲文件電腦 瀏覽:957
編程怎麼做到時鍾精準 瀏覽:912
錘子用過的壁紙在哪個文件里 瀏覽:468
qq網站安全性未知訪問不了怎麼辦 瀏覽:270
燕秀怎麼修改編程人名字 瀏覽:789
2012年天之眼導航升級 瀏覽:595
如何安裝視頻文件 瀏覽:315
紅米2A升級miui9 瀏覽:927
如何在表格中加入一行資料庫 瀏覽:421

友情鏈接