Generate matrix of a random process with each row using different parameters and no for-loop
4 ビュー (過去 30 日間)
古いコメントを表示
For example, suppose I want to generate 5 different normally distributed vectors with 10 samples each. The first vector will have a mu = 0, sigma = 1, the second a mu = 5, sigma = 3, etc. What I would like to be able to do would be something like the following code:
mu = [0, 3, 2, 5, 1]; sigma = [1, 5, 4, 10, 7]; myDistributions = random('norm', mu, sigma, [5, 10]);
and have it output a 5-by-10 matrix with the first row using parameters mu = 0, sigma = 1; the second row using parameters mu = 3, sigma = 5. etc.
I suspect I'll have to bite the bullet and just use a for-loop if I want to do this, but I'm hoping I've missed something else that can be done for this sort of thing.
0 件のコメント
採用された回答
Brendan Hamm
2016 年 6 月 7 日
You can use arrayfun for this:
mu = [0, 3, 2, 5, 1];
sigma = [1, 5, 4, 10, 7];
A = arrayfun(@(x,y) random('norm', x, y, [1, 10]),mu,sigma,'UniformOutput',false)
% Change from a cell to a matrix:
A = cell2mat(A);
その他の回答 (1 件)
Jos (10584)
2016 年 6 月 7 日
mu = [0, 3, 2, 5, 1]
sigma = [1, 5, 4, 10, 7]
MyDistributions = cell2mat(arrayfun(@(k) random('norm', mu(k), sigma(k), [1, 10]),(1:numel(mu))','un',0))
参考
カテゴリ
Help Center および File Exchange で Loops and Conditional Statements についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!