Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-12-14, 20:38   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 如何在Matlab中生成遵循偏态正态分布的随机数

我有偏态正态分布的概率密度函数,我想在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

更多&回答...
poster 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 23:32


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.