在matlab中生成高斯数据

在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') 

这里是生成的情节:

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 %%为什么这不能给我们一个好的数字? 我的意思是,在循环之前生成随机数据? –