如何生成指定均值和協方差矩陣的二維高斯分布資料

2021-08-13 19:25:24 字數 1597 閱讀 2851

廢話不多說,先貼**。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...

均值 方差 協方差 協方差矩陣 特徵值 特徵向量

均值 描述的是樣本集合的中間點。方差 描述的是樣本集合的各個樣本點到均值的距離之平均,一般是用來描述一維資料的。協方差 是一種用來度量兩個隨機變數關係的統計量。只能處理二維問題。計算協方差需要計算均值。如下式 方差與協方差的關係 方差是用來度量單個變數 自身變異 大小的總體引數,方差越大表明該變數的...