在matlab中生成高斯数据

时间:2017-09-15 06:21:08

标签: matlab matlab-deployment

我需要生成一个高斯向量,例如。 &#34;增量&#34; - 具有任意大小 - 具有零均值和方差&#34; alpha&#34;。 如果&#34; alpha&#34;选择使得范数(delta,2)<= 0.5,其概率为例如0。 90%。我们怎么能这样做?

1 个答案:

答案 0 :(得分: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的精确度越高。