0
我需要生成一個高斯向量, 「delta」 - 任意大小,零均值和「alpha」的方差。 如果選擇「alpha」使得範數(delta,2)< = 0.5,並且具有例如90%。我們怎麼做到這一點?在matlab中生成高斯數據
我需要生成一個高斯向量, 「delta」 - 任意大小,零均值和「alpha」的方差。 如果選擇「alpha」使得範數(delta,2)< = 0.5,並且具有例如90%。我們怎麼做到這一點?在matlab中生成高斯數據
用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')
這裏是生成的情節:
的alpha
(方差)你試圖找到的是0.01537。 REP
越高,您的alpha
的精度就越高。
非常感謝你的回答。如你所知,按照標準(delta,2),我們得到卡方分佈的數據。我們可以基於這個視圖生成數據 - 用卡方的matlab函數嗎? –
是的,您可以替換:「delta = alpha。* randn(1000,1)+ mu; Normv(j)= norm(delta,2);」由chi2pdf(阿爾法,阿爾法)。我不知道有任何功能可以做到這一點。希望這能解決你的問題。 – hello123
謝謝。一個問題,假設在這段代碼中我們只取代:data = randn(1000,1);對於k = 1: 對於j = 1:長度(方差) 。 Normv(J)=範數(增量,2); end %%爲什麼這不能給我們一個好的數字? 我的意思是,在循環之前生成隨機數據? –