在matlab中模拟随机游走

时间:2014-01-28 01:29:37

标签: matlab

我有变量x,根据以下规则进行随机游走:

x(t+1)=x(t)-1; probability p=0.3
x(t+1)=x(t)-2; probability q=0.2
x(t+1)=x(t)+1; probability p=0.5

a)我必须创建这个初始化为零的变量并写一个for循环100步并运行10000次将每个最终值存储在xfinal中 b)我必须绘制xfinal(直方图)的概率分布,选择bin大小和规范化!! *我必须报告xfinal的均值和方差 c)我必须通过应用中心极限定理重建分布并在同一图上绘制概率分布!

帮助将告诉我如何选择bin大小和规范化直方图以及如何尝试部分c) 非常感谢你的帮助!!

p=0.3;
q=0.2;
s=0.5;
numberOfSteps = 100;
maxCount = 10000;
for count=1:maxCount
    x=0;
    for i = 1:numberOfSteps
        random = rand(1, 1);
        if random <=p
            x=x-1;
        elseif random<=(p+q)
            x=x-2; 
        else
            x=x+1;
        end
    end
    xfinal(count) = x;
end
[f,x]=hist(xfinal,30);
figure(1)
bar(x,f/sum(f));
xlabel('xfinal')
ylabel('frequency')
mean = mean(xfinal)
variance = var(xfinal)

1 个答案:

答案 0 :(得分:0)

对于第一个问题,请在mathworks主页上查看hist的帮助

[nelements,centers] = hist(data,nbins);

您不选择纸槽尺寸,而是选择纸槽数量。 nelements给出每个bin的元素,center是所有bin中心。所以说,调用

是一样的

hist(data,nbins);

作为

  [nelements,centers] = hist(data,nbins);
  plot(centers,nelements);

除了表示不同(行或堆)。要标准化,只需将nelements与sum(nelements)分开

对于c,这里是i.i.d.如果变量是真实的或复杂的,它实际上是一个差异。然而,对于实数变量,简称中心极限定理告诉您,对于大量样本,分布将限制正态分布。因此,如果样本是真实的,您只需确定正态分布,计算均值和方差,并将其绘制为正态分布。如果变量很复杂,那么每个变量都将是正态分布的,这意味着您将获得瑞利分布。