How do I make the chi2rnd(size) Matlab function faster for big matrices?

2 ビュー (過去 30 日間)
Jorge
Jorge 2015 年 7 月 11 日
コメント済み: Jorge 2015 年 7 月 14 日
I'm running a program a couple thousand times, and the bottleneck of it is just creating the chi-squared noise matrix. It has size 2048 by 100,000 and it takes more than 80% of each iteration (I'm doing 'chi2rnd(2048, 1000,000)) Is there anyway to make this function faster? Or to code my own?

採用された回答

Alfonso Nieto-Castanon
Alfonso Nieto-Castanon 2015 年 7 月 12 日
編集済み: Alfonso Nieto-Castanon 2015 年 7 月 12 日
storing the chi2rnd(2048, 1000000) results require about 16Gb of memory, perhaps the extra time is due to memory-swapping rather than actually computing these values? (I suggest to evaluate whether your code actually needs the entire matrix being computed in a single step)
  1 件のコメント
Jorge
Jorge 2015 年 7 月 14 日
Thank you. I do believe you are right. I'll try to chop it up in pieces

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

その他の回答 (1 件)

Walter Roberson
Walter Roberson 2015 年 7 月 11 日
chi2rnd() appears to be coded in terms of gamrnd(), so you could speed things up by calling gamrnd() directly; that would reduce the error checking overhead.

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by