利用matlab進行協方差運算


本文全部參考自:

http://www.cnblogs.com/welen/articles/5535042.html#undefined

知識點一:

MATLAB中四個取整函數具體使用方法如下:
Matlab取整函數有: fix, floor, ceil, round.
fix
零方向取整,如fix(-1.3)=-1; fix(1.3)=1;


floor
負無窮方向取整,如floor(-1.3)=-2; floor(1.3)=1;


ceil
正無窮方向取整,如ceil(-1.3)=-1; ceil(1.3)=2;


round
四舍五入到最近的整數,如round(-1.3)=-1;round(-1.52)=-2;round(1.3)=1;round(1.52)=2。

 

知識點二:

matlab std函數是用來計算標准偏差的一個函數

std(A)函數求解的是最常見的標准差,此時除以的是N-1。

注意:此函數命令不能對矩陣求整體的標准差,只能按照行或者列進行逐個求解標准差,默認情況下是按照列。

在MATLAB主窗口中輸入std(A) 回車,結果如下:

輸出的是每一列的標准差。

std(A,flag):

這里flag代表的是用哪一個標准差函數,如果取0,則代表除以N-1,如果是1代表的是除以N。

 

 知識點三:

協方差公式:

例子:

clc;
clear;
mySample = fix(rand(10,3)*100);
dim1 = mySample(:,1);  %所有樣本的同一維度
dim2 = mySample(:,2);
dim3 = mySample(:,3);

%計算dim1與dim2,dim1與dim3,dim2與dim3之間的協方差
%參考協方差公式
conv12 =sum( (dim1-mean(dim1)).*(dim2-mean(dim2)) ) /( size(mySample,1)-1 );
conv13 =sum( (dim1-mean(dim1)).*(dim3-mean(dim3)) ) /( size(mySample,1)-1 );
conv23 =sum( (dim2-mean(dim2)).*(dim3-mean(dim3)) ) /( size(mySample,1)-1 );

%計算各個維度的方差
var1 = std(dim1)^2
var2 = std(dim2)^2
var3 = std(dim3)^2

%----------------------------------
%使用標准函數cov進行驗證
cov(mySample)

測試結果:

使用Matlab的cov函數直接計算樣本的協方差矩陣計算的結果,和之前的數據填入矩陣后的結果完全相同。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM