在matlab中生成高斯数据

Generate Gaussian data in matlab

我需要生成一个高斯向量,例如"delta" - 任意大小 - 均值为零,方差为 "alpha"。 如果选择 "alpha" 使得 norm(delta,2)<=0.5 的概率为例如90%。我们该怎么做?

使用 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.

的精度就越高