我如何在MATLAB中模拟概率密度函数
fx(x)={ x/8 0<=x<=4
{ 0 Other
Run Code Online (Sandbox Code Playgroud)
谢谢!
任意概率密度函数的模拟如下:
1)导出逆累积分布.
2)从均匀[0,1]分布模拟.
3)将均匀[0,1]数字插入反向累积分布.
在你的情况下,你有一个很好的简单概率密度,让我怀疑这是一个功课问题.鉴于您没有发布任何代码表明您已尝试自行解决,我不会只为您写出答案.
相反,你为什么不亲自得出逆累积分布呢?首先,您需要获得累积分布.这可以通过找到从无穷大到x的概率密度的积分来完成,在你的情况下,它等于从0到x的积分.完成此操作后,您需要找到它的反转.这里的示例应该足以向您展示如何为您的简单案例执行此操作.如果你走得那么远,那么rand(100, 1)用来模拟均匀[0,1]密度的100次绘制,然后将这些数字插入到反向累积分布中.
如果您遇到任何问题,请随时编辑您的问题以添加它们,并对此答案发表评论,我会帮助您.我在接下来的一个小时左右.
干杯.
更新:我认为OP的作业可能是到现在为止,所以为了完整性:概率密度的积分,即累积分布,是f(x)=(1/16)x ^ 2.注意,当x = 0时,f(x)= 0,并且当x = 4时,f(x)= 1.这表明问题已经正确地说明了概率密度的域.接下来,f(x)意味着g(x)= 4*x ^(1/2)的逆CDF.因此:
MyInverseCDF = @(x) (4 * sqrt(x));
MySimulatedDraw = MyInverseCDF(rand(100, 1));
Run Code Online (Sandbox Code Playgroud)
我们可以直观地验证一切正常:
hist(MySimulatedDraw);
Run Code Online (Sandbox Code Playgroud)
另一件事,这里是另一个相关的SO问题的链接:在matlab中定义你自己的概率分布函数
| 归档时间: |
|
| 查看次数: |
1180 次 |
| 最近记录: |