How do I combine two different distributions in MATLAB?
6 次查看(过去 30 天)
显示 更早的评论
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.
0 个评论
采纳的回答
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
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
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 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Multivariate Normal Distribution 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!