Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我有偏态正态分布的概率密度函数,我想在matlab中生成遵循偏态正态分布的随机数。
回答: 无法保证其性能/性能,但http://azzalini.stat.unipd.it/SN/表示以下内容,并且具有指向MATLAB函数的.zip文件的链接: 该库已由Nicola Sartori移植到Matlab。到目前为止,这是指更新0.21;因此不包括偏斜t分布的设施。但是,可以通过Enrique Batiz编写并提供的一组Matlab函数来获得偏斜t分布的部分功能 (Enrique.Batiz [位于] postgrad.mbs.ac.uk)另请参见在Visual Basic中的此代码 ,但应易于移植。相关摘录如下。这使用RandNorm(也在链接的网页中),它是单位正态分布中的一对数字,在MATLAB中,您应该能够使用randn(2,1) 。 Function RandSkew(fAlpha As Single, _ Optional fLocation As Single = 0, _ Optional fScale As Single = 1, _ Optional bVolatile As Boolean = False) As Single ' shg 2008-0919 ' http://azzalini.stat.unipd.it/SN/faq.html ' Returns a random variable with skewed distribution ' fAlpha = skew ' fLocation = location ' fScale > 0 = scale Dim sigma As Single Dim afRN() As Single Dim u0 As Single Dim v As Single Dim u1 As Single If bVolatile Then Application.Volatile Randomize (Timer) sigma = fAlpha / Sqr(1 + fAlpha ^ 2) afRN = RandNorm() u0 = afRN(1) v = afRN(2) u1 = sigma * u0 + Sqr(1 - sigma ^ 2) * v RandSkew = IIf(u0 >= 0, u1, -u1) * fScale + fLocation End Function 更多&回答... |
![]() |
![]() |