泊松分布matlab
我想产生一组二值序列{0、1},0代表无故障的时间点,1代表有故障的时间点,假设出现故障的次数满足泊松分布,那么怎么通过matlab产生?...
我想产生一组二值序列{0、1},0代表无故障的时间点,1代表有故障的时间点,假设出现故障的次数满足泊松分布,那么怎么通过matlab产生?
展开
1个回答
展开全部
提供一个主要的思路,具体处理方法看你要解决的问题需满足什么条件。
根据泊松过程定义,令随机变量Tn(n≥1)表示从(n-1)次事件发生到第n次事件发生的时间间隔,则可证明,Tn服从相互独立但参数为λ的相同指数分布。这可用蒙特卡洛仿真来处理。其步骤为:
1)令当前时刻t=0,泊松事件计数值为N=0;
2)利用rand产生(0,1)上均匀分布的随机数U,令E=-1/λ*ln(U);
3)令t=t+E,如果t>T,则停止;
4)令N=N+1,并且设tn=t;
5)循环直至循环终止
代码如下:以λ=2,T=10为例
clc,clear
t=0;N=0;
T=10;lamda=2;A=[];
while(t<=T)
U=rand;
E=-1/lamda*log(U);
t=t+E;
N=N+1;
A=[A;N,t];
end
A=A';
由A知发生故障的时间点为:
[0.0298 0.0523 0.3288 1.7373 2.4619 2.9823 3.0808 5.1674 6.7404 7.6293 7.8454 8.0016 8.2187 8.6170 8.9186 9.5268 9.6741 10.5073]
当你要产生序列的时候,将上述时间点换成1,其余时间点令为0即可,由于序列的时间点为整数,这就涉及到取整的问题,如何处理看你的需要。
参考文献:
基于MATLAB的随机过程仿真
http://www.docin.com/p-472423872.html
根据泊松过程定义,令随机变量Tn(n≥1)表示从(n-1)次事件发生到第n次事件发生的时间间隔,则可证明,Tn服从相互独立但参数为λ的相同指数分布。这可用蒙特卡洛仿真来处理。其步骤为:
1)令当前时刻t=0,泊松事件计数值为N=0;
2)利用rand产生(0,1)上均匀分布的随机数U,令E=-1/λ*ln(U);
3)令t=t+E,如果t>T,则停止;
4)令N=N+1,并且设tn=t;
5)循环直至循环终止
代码如下:以λ=2,T=10为例
clc,clear
t=0;N=0;
T=10;lamda=2;A=[];
while(t<=T)
U=rand;
E=-1/lamda*log(U);
t=t+E;
N=N+1;
A=[A;N,t];
end
A=A';
由A知发生故障的时间点为:
[0.0298 0.0523 0.3288 1.7373 2.4619 2.9823 3.0808 5.1674 6.7404 7.6293 7.8454 8.0016 8.2187 8.6170 8.9186 9.5268 9.6741 10.5073]
当你要产生序列的时候,将上述时间点换成1,其余时间点令为0即可,由于序列的时间点为整数,这就涉及到取整的问题,如何处理看你的需要。
参考文献:
基于MATLAB的随机过程仿真
http://www.docin.com/p-472423872.html
追问
非常感谢!很清楚!不过还有2个问题
1.您也提到,生成序列的时候,我是不是可以以0.01为单位(或者说1个时间点),这样1到10即1000点,而上述A中的点保留2位有效数字的话就可以看作是有故障的时刻,也就是1000点中有上述17个时刻有故障(10.5073>10)?
2.lamda在这里怎么理解?
或者说我在生成序列的时候,把T设的大一些,设为1000,lambda=0.5,这样大概有400组点是有故障的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询