概率密度函数

Joe*_*Joe 1 statistics matlab

我如何在MATLAB中模拟概率密度函数

fx(x)={ x/8    0<=x<=4
      {   0     Other
Run Code Online (Sandbox Code Playgroud)

谢谢!

Col*_*ers 7

任意概率密度函数的模拟如下:

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中定义你自己的概率分布函数