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