0

所以我试图将一个由 poissrnd 生成的矩阵元素传播到另一个矩阵元素,使用一些更大(更宽?)的概率函数(例如 100 种不同权重的不同可能性)来绘制它们,看看传播后的波动是否下楼。在看到它不能正常工作(波动变大)之后,我试图在一个非常简单的例子中找出我做错了什么。经过很长时间的测试,我仍然无法理解问题所在。这个例子是这样的:

  1. 我生成带有 poissrnd 的向量和用于传播的向量(在开始时用零填充)
  2. poiss 向量中的每个元素告诉我从以下可能的选项中生成多少个数字(元素值的 0.1):[1,2,3] 和相应的权重 [0.2,0.5,0.2]
  3. 我将我得到的另一个向量传播到 3 个元素上:对应的(第 k 个),一个在对应的之前,一个在对应的之后(例如,如果 k=3,元素应该像这样传播:大多数应该进入另一个向量的第三个元素,其余的应该进入第二个和第一个元素)
  4. 绘制 0.1*poiss 向量和扩展后的向量,以比较波动是否下降

我生成加权数字的方式来自这个线程:MATLAB中的加权随机数

这是我正在使用的代码:

clear all
clc

eta=0.1;
N=200;
fot=10000000;
ix=linspace(-100,100,N);
mn =poissrnd(fot/N, 1, N);
dataw=zeros(1,N);
a=1:3;
w=[.25,.5,.25];

for k=1:N

   [~,R] = histc(rand(1,eta*mn(1,k)),cumsum([0;w(:)./sum(w)]));
   R = a(R);
   przydz=histc(R,a);
   if (k>1) && (k<N)
           dataw(1,k)=dataw(1,k)+przydz(1,2);
           dataw(1,k-1)=dataw(1,k-1)+przydz(1,1);
           dataw(1,k+1)=dataw(1,k+1)+przydz(1,3);
   elseif k==1
           dataw(1,k)=dataw(1,k)+przydz(1,2);
           dataw(1,N)=dataw(1,N)+przydz(1,1);
           dataw(1,k+1)=dataw(1,k+1)+przydz(1,3);
   else
           dataw(1,k)=dataw(1,k)+przydz(1,2);
           dataw(1,k-1)=dataw(1,k-1)+przydz(1,1);
           dataw(1,1)=dataw(1,1)+przydz(1,3);

   end


end


plot(ix,eta*mn,'g',ix,dataw,'r')

波动还是比较大的,我也分不清是哪里出了问题……这种情况下生成加权数的方法有问题吗?因为看起来不是这样。我从第一个向量中累积数据的方式似乎也很好。有没有另一种方法可以做到(所以我可以优化它以使用“更大”的概率函数)?

对不起我糟糕的英语。

[编辑]:

这是一个简单的图片来说明我的意思(我希望它可以理解)

4

1 回答 1

0

尝试负二项分布怎么样?它通常用作泊松分布的超分散类似物。可以在本文中找到其他链接,以及补充的一些设备。

于 2015-01-21T21:47:48.643 回答