2013-04-18 157 views
3

雖然我可能有點密集,但我不是非常數學,似乎也無法理解創建多變量數據的協方差元素。在Matlab中生成多元隨機數

我在兩列隨機數據(代表兩個相關變量)之後。

我認爲我需要使用mvnrnd函數並且我明白'mu'必須是我的平均向量的列。因爲我需要4個不同的類在我的數據中將(1,1)(-1 1)(1 -1)和(-1 -1)。我想我必須每次都用不同的平均向量列來執行函數4x,然後將它們組合起來以獲取我的完整數據集。

我不明白我應該爲SIGMA提供什麼 - Matlab幫助告訴我它必須是一個d-by-d對稱正半定矩陣或者一個d-by-n陣列'即協方差矩陣。我不明白我如何爲尚未生成的數字創建協方差矩陣。

任何意見將不勝感激!

+0

[_covariance matrix_](http://en.wikipedia.org/wiki/Cross-covariance_matrix#Statistics)是定義和確定分佈的東西,這就是爲什麼它是輸入的一部分,就像_mean_和_standard deviation_ 。 –

+0

對不起,這可能是我的教誨偏見,但如何配合一個例子和一些粗略的數字你的目標是什麼? – fpe

+0

2維特徵空間中的4個高斯分佈(總共1000個病例)。每個分佈的先驗概率應該是0.25,平均向量必須是class1 =(1,1),c2 =(1,-1),c3 =(-1,1)和c4 =(-1,-1) 。這只是模擬數據,以便進行遙感分類。我目前正在修改Matlab示例,以瞭解在協方差矩陣中實際改變值的含義。感謝您的鏈接:) – Laura

回答

1

假設我正確理解你的話,我會去這樣:

data = [normrnd(0,1,5000,1),normrnd(0,1,5000,1)]; %% your starting data series 
MU = mean(data,1); 
SIGMA = cov(data); 

現在,它應該是可能的MUSIGMA養活mvnrnd

r = mvnrnd(MU,SIGMA,5000); 
plot(r(:,1),r(:,2),'+') %% in case you wanna plot the results 

我希望這有助於。

+0

請注意,我的只是一個非常粗略的例子。我不知道你的數據是否強調任何預期的協方差矩陣。 – fpe

0

我認爲你的目標是生成模擬的多元高斯分佈數據。例如,我使用了10倍

k = 6; % feature dimension mu = rand(1,k); sigma = 10*eye(k,k);

單位矩陣是對稱的半正定矩陣。而高斯分佈將比其他類型的西格瑪更圓。

然後你可以使用它作爲mvnrnd函數的上面的例子,看看圖。