フィルターのクリア

How do I combine two different distributions in MATLAB?

6 ビュー (過去 30 日間)
James Newton
James Newton 2012 年 9 月 21 日
Suppose I have X ~ Norm(x,y) and Y ~ Exponential(k)
I wish to create a new variable T = X + Y. How would this be done?
I need to be able to generate random numbers from the new variable T. Say I want to generate 1000 values how would I now do this?
Any help greatly appreciated.
Thanks.

採用された回答

José-Luis
José-Luis 2012 年 9 月 21 日
編集済み: José-Luis 2012 年 9 月 21 日
your_fun = @(average,var,k,numRows,numCols) average + var.*randn(numRows,numCols) + exprnd(k,numRows,numCols)
And to get values:
your_vals = your_fun(3,2,5,10,10)
will give you a 10 x 10 matrix of random values.
  5 件のコメント
José-Luis
José-Luis 2012 年 9 月 21 日
編集済み: José-Luis 2012 年 9 月 22 日
Well, I am sure there is an original paper defining the normal distribution, probably by Gauss, but any statistics book will give you the functions for both distributions. What James wanted was a random variable that is the sum of two other random variables. If you are talking about how the values are sampled, the default in Matlab is based on the Mersenne-Twister algorithm:
Matsumoto, M.; Nishimura, T. (1998). "Mersenne twister: a 623-dimensionally equidistributed uniform pseudo-random number generator". ACM Transactions on Modeling and Computer Simulation 8 (1): 3–30. doi:10.1145/272991.272995
The rest is just a more or less forward application of the formula (M-T will give you a value that you translate into a quantile that you then use to get your random value, using the formula that defines it).
Daniel Shub
Daniel Shub 2012 年 9 月 21 日
@James, he could have done normrnd(mu,sigma,m,n), but it would be a hair slower because of the extra error checking.

サインインしてコメントする。

その他の回答 (1 件)

James Newton
James Newton 2012 年 9 月 21 日
Thanks for the answer, it makes sense, forgot about making a function!

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by