1. 程式人生 > >Matlab統計工具箱中各類概率分佈函式使用方法介紹

Matlab統計工具箱中各類概率分佈函式使用方法介紹

1.      Matlab Statistics Toolbox 中概率分佈函式介紹 Matlab Statistics Toolbox 提供了對幾乎所有概率分佈的支援,可以方便產生服從各類分佈的隨機數及其PDF/CDF 函式。其中,既提供了針對所有分佈的通用分佈函式,其引數是指定的特定分佈;也提供了針對特定分佈的專用分佈函式,其函式名直接針對某種特定分佈,故該函式的無需再提供分佈特性引數。

常用的 通用分佈函式 如下: 1)      pdf:用於生成各類概率分佈的PDF 2)      cdf:用於生成各類概率分佈的CDF 3)      icdf:用於生成各類概率分佈的inverse CDF 4)      random:用於生成各類概率分佈的隨機數 5)      fitdist:用於生成各類概率分佈擬合給定隨機資料的統計引數(如均值、方差)


常用
專用分佈函式如下:( *表示萬用字元,用於指定特定分佈) 1)      *pdf:生成特定的*概率分佈的PDF 2)      *cdf:生成特定的*概率分佈的CDF 3)      *inv:生成特定的*概率分佈的inverseCDF 4)      *rnd:生成特定的*概率分佈的隨機數 5)      *fit:生成特定的*概率分佈擬合給定隨機資料的統計引數 6)      *stat:得到特定的*概率分佈的統計引數



2.      分佈函式呼叫舉例

通用分佈函式 舉例: Y = pdf(name,X,A) computes the PDF for theone-parameter family of distributions specified by name. A contains parametervalues for the distribution. Densities are evaluated at the values in X andreturned in Y.
Y = cdf(name,X,A) computes the CDF for theone-parameter family of distributions specified by name. A contains parametervalues for the distribution. The CDF is evaluated at the values in X and its valuesare returned in Y.
Y = icdf(name,X,A)
computes the inverse CDF for theone-parameter family of distributions specified by name. Parameter values forthe distribution are given in A. The inverse CDF is evaluated at the values inX and its values are returned in Y.
Y = random(name,A,m,n):Generate random numbers Y (ofm rows and n columns) from the one-parameter family of distributions specifiedby name. Parameter values for the distribution are given in A.
PD = fitdist(X, name) fits the probabilitydistribution specified by name to the data in the column vector X, and returnsPD, an object representing the fitted distribution.

A指定描述分佈的統計引數(如均值、方差),name 指定概率分佈型別。例如: name 'norm' or 'Normal' 表示 Gaussian 分佈, name 'rayl' or 'Rayleigh' 表示 Rayleigh 分佈, name 'rician' 表示 Rician 分佈, name為'nakagami'表示Nakagami-m分佈 Matlab 統計工具箱幾乎支援所有的分佈,具體檢視統計工具箱。


專用分佈函式 舉例: 1).    *pdf:normpdf, raylpdf,exppdf, gampdf, betapdf得到Gaussian, Rayleigh, Exponential, Gamma, Beta的PDF函式。(Rician和Nakagami-m沒有專用分佈函式,所以,其PDF只能用通用函式pdf指定name為’rician’或’nakagami’得到)
2).    *cdf: normcdf, raylcdf,expcdf, gamcdf, betacdf得到Gaussian, Rayleigh, Exponential, Gamma, Beta 的CDF函式。(Rician和Nakagami-m沒有專用分佈函式,所以,其CDF只能用通用函式cdf指定name為’rician’或’nakagami’得到)
3).    *inv: norminv, raylinv,expinv, gaminv, betainv得到Gaussian, Rayleigh, Exponential, Gamma, Beta 的inverse CDF函式。(Rician和Nakagami-m沒有專用inverseCDF函式,所以,其inverse CDF只能用通用函式icdf指定name為’rician’或’nakagami’得到)
4).    *rnd: normrnd, raylrnd, exprnd, gamrnd,betarnd得到Gaussian, Rayleigh, Exponential, Gamma, Beta分佈的隨機資料。(Rician和Nakagami-m沒有專用的函式,所以,對應的隨機數只能用通用函式random指定name為’rician’或’nakagami’得到)
5).    *fit:normfit, raylfit,expfit, gamfit, betafit得到Gaussian, Rayleigh, Exponential, Gamma, Beta分佈的擬合結果。(Rician和Nakagami-m沒有專用的函式,所以,對應的擬合只能用通用函式fitdist指定name為’rician’或’nakagami’得到)
6).    *stat:normstat, raylstat,expstat, gamstat, betastat得到Gaussian, Rayleigh, Exponential, Gamma, Beta分佈統計引數。(Rician和Nakagami-m沒有專用的函式也無通用函式,故無法通過呼叫系統函式得到其統計引數)



3.      無線通訊系統中的應用

可用於產生服從各類分佈的偽隨機數。例如,在通訊系統中,經常需要對 無線通道進行模擬。尤其是需要對Rayleigh、Rician、Nakagami-m、log-normal、Weibull等通道進行模擬,此時,可利用Matlab Statistics Toolbox來方便地產生各類通道。例如,可以通過呼叫random(’nakagami’,A,m,n) 產生一個m行n列的MIMO Nakagami-m通道,其引數由A指定。另外,通訊系統中往往伴隨各類分佈的 噪聲,最常見的是高斯噪聲,有時還會遇到非高斯的特定分佈,此時,此工具箱中的函式可以方便的用於產生服從各類分佈的隨機噪聲。


4.      總結

如果無需呼叫Toolbox的情況下,Matlab內建(built-in)函式(如randn)就可以實現功能,就優先使用Matlab內建函式,不要使用Toolbox中的函式。因為Matlab內建函式具備較高的效率,而Toolbox中的函式在程式入口處往往設定許多分支判斷,降低了程式效率。除非是Matlab內建函式無法完成的功能,才使用Toolbox中的函式例如, Matlab 內建函式 randn 可以得到 Gaussian 分佈隨機數,故無需使用 Toolbox 中的 random 或者 normrnd 來生成 Gaussian 分佈隨機數。但是 Matlab 沒有提供生成 Nakagami-m 隨機數的內建函式,此時,只能通過 Toolbox 中的 random 來生成 Nakagami-m 隨機數。

當使用Matlab Statistics Toolbox時,優先使用上述的專用函式,而非通用函式,因為通用函式為使程式具有較好的通用性,在程式入口處增加了很多條件分支判斷,降低了程式效率,而專用函式則直接執行鍼對特定分佈的操作,故具備更高的效率 。事實上,輸入editrandom 後,會發現random.m 的實現也是通過switch ….. case ….. 來判斷需要呼叫特定的專用函式,例如當random 函式的name 引數設定為’normal’ 時,實際上會呼叫normrnd 函式。對於沒有專用函式的,如Nakagami-m Rician ,則不會呼叫專用函式,而是通過random 內部模組實現。