廢話不多說,先貼**。function y= main_generate_data()clc
clear
close all
%%%%%%%%%%%%%%%%%%%%%%%%%生成實驗資料集
rand('state',0)
sigma_matrix1=eye(2);
sigma_matrix2=50*eye(2);
u1=[0,0];
u2=[30,30];
m1=100;
m2=300;%樣本數
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%sm1資料集
y1=multivrandn(u1,m1,sigma_matrix1);
y2=multivrandn(u2,m2,sigma_matrix2);
scatter(y1(:,1),y1(:,2),'bo')
hold on
scatter(y2(:,1),y2(:,2),'r*')
title('sm1資料集')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%sm2資料集
u11=[0,0];
u22=[5,5];
u33=[10,10];
u44=[15,15];
m=600;
sigma_matrix3=2*eye(2);
y11=multivrandn(u11,m,sigma_matrix3);
y22=multivrandn(u22,m,sigma_matrix3);
y33=multivrandn(u33,m,sigma_matrix3);
y44=multivrandn(u44,m,sigma_matrix3);
figure(2)
scatter(y11(:,1),y11(:,2),'bo')
hold on
scatter(y22(:,1),y22(:,2),'r*')
scatter(y33(:,1),y33(:,2),'go')
scatter(y44(:,1),y44(:,2),'c*')
title('sm2資料集')
endfunction y = multivrandn(u,m,sigma_matrix)
%%生成指定均值和協方差矩陣的高斯資料
n=length(u);
c = chol(sigma_matrix);
x=randn(m,n);
y=x*c+ones(m,1)*u;
end解釋一下,主函式主要是設定好已知的樣本數目和均值和協方差矩陣。然後呼叫multivrandn就可以了,詳細解釋一下nestfunction,nestfunction裡面有chol這個函式,這個函式就是喬木斯分解,數值分析裡有講過。它的作用相當於實數中求平方根,在矩陣中分解就是分解為乙個下三角矩陣和它共軛裝置的乘積。下三角矩陣就是c,這樣就好理解了,我們的x生成的是方差為1,均值為0的高斯分布,而x*c就生成了均值為0,協方差為c的矩陣,加上u就生成了我們想要的均值資料。解釋夠詳細了吧,不過,可以進行喬木斯分解必須滿足兩個條件,乙個是矩陣中的原始共軛對稱,乙個是矩陣是正定矩陣,半正定也可以,不過分解就不是唯一的了
協方差和協方差矩陣
協方差的定義 對於一般的分布,直接代入e x 之類的就可以計算出來了,但真給你乙個具體數值的分布,要計算協方差矩陣,根據這個公式來計算,還真不容易反應過來。網上值得參考的資料也不多,這裡用乙個例子說明協方差矩陣是怎麼計算出來的吧。記住,x y是乙個列向量,它表示了每種情況下每個樣本可能出現的數。比如...
期望 方差 協方差和協方差矩陣
1 泊松分布的期望等於 role presentation 2 均勻分布的期望位於區間的中心 3 高斯分布的期望為 role presentation 4 二項分布的期望為np role presentation npn p常數的期望等於該常數 e cx ce x role presentation...
均值 方差 協方差 協方差矩陣 特徵值 特徵向量
均值 描述的是樣本集合的中間點。方差 描述的是樣本集合的各個樣本點到均值的距離之平均,一般是用來描述一維資料的。協方差 是一種用來度量兩個隨機變數關係的統計量。只能處理二維問題。計算協方差需要計算均值。如下式 方差與協方差的關係 方差是用來度量單個變數 自身變異 大小的總體引數,方差越大表明該變數的...