2017-09-15 90 views
0

我需要生成一個高斯向量, 「delta」 - 任意大小,零均值和「alpha」的方差。 如果選擇「alpha」使得範數(delta,2)< = 0.5,並且具有例如90%。我們怎麼做到這一點?在matlab中生成高斯數據

回答

0

var.*randn(1000,1) + mu您可以生成一個具有一定方差var和平均mu的向量。然後我們計算norm(delta,2)。該操作重複100000次。在變量B中存儲的值爲norm(delta,2)<=0.5。概率是那麼Prob=length(B)/length(Normv)

mu = 0; alpha = 0.01537; 
Normv=0; 
REP=100000 
for j=1:REP 
    delta = alpha.*randn(1000,1) + mu; 
    Normv(j)=norm(delta,2); 
end 
B=Normv(Normv<=0.5); 
Prob=length(B)/length(Normv); 

你還可以包括一個for循環,席捲方差

Normv=0; 
mu = 0; 
aux=1; 
REP=10000; 
variance = 0.014:0.0001:0.017; 
for k=1:length(variance) 
for j=1:REP 
    delta = variance(k).*randn(1000,1) + mu; 
    Normv(j)=norm(delta,2); 
end 
B=Normv(Normv<=0.5); 
Prob(aux)=length(B)/length(Normv); 
aux=aux+1; 
end 

plot(variance,Prob) 
xlabel('Variance') 
ylabel('Probability') 

這裏是生成的情節:

Plot Probability(Variance)

alpha(方差)你試圖找到的是0.01537。 REP越高,您的alpha的精度就越高。

+0

非常感謝你的回答。如你所知,按照標準(delta,2),我們得到卡方分佈的數據。我們可以基於這個視圖生成數據 - 用卡方的matlab函數嗎? –

+0

是的,您可以替換:「delta = alpha。* randn(1000,1)+ mu; Normv(j)= norm(delta,2);」由chi2pdf(阿爾法,阿爾法)。我不知道有任何功能可以做到這一點。希望這能解決你的問題。 – hello123

+0

謝謝。一個問題,假設在這段代碼中我們只取代:data = randn(1000,1);對於k = 1: 對於j = 1:長度(方差) 。 Normv(J)=範數(增量,2); end %%爲什麼這不能給我們一個好的數字? 我的意思是,在循環之前生成隨機數據? –