在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
.
的精度就越高
我需要生成一个高斯向量,例如"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
.