2014-10-31 25 views
1

所以,我正在尋找一種加速我的代碼的方法。我有一個正態分佈的大向量(即平均值和標準偏差向量),我需要從中產生隨機數。我的代碼一個通用的例子是這樣的:在MATLAB中爲分佈族提高NORMRND的速度

tic 

N=1e6; 
mu = rand(N,1); 
sigma = rand(N,1); 

temp = zeros(length(mu),1); 

for i = 1:length(mu) 
    temp(i) = normrnd(mu(i),sigma(i)); 
end 

toc 

這段代碼在當前的形式已經經過時間:

Elapsed time is 12.281509 seconds. 

我通常會嘗試向量化了我的大部分計算密集型的命令,而右現在我很難理解如何讓這個運行更快。每次運行代碼時,我將不得不多次執行此操作,所以我可以更快地讓它變得更好。

你們有沒有想過如何加快速度的MATLAB技巧?

謝謝!約翰

回答

2

攻入normrnd.m得到這個定製代碼必須複製的問題depicited功能 -

N=1e6; 
mu = rand(N,1); 
sigma = rand(N,1); 
temp = randn(size(sigma)).*sigma + mu; 

在我的系統中,運行時減少從18.946094 seconds0.037229 seconds

希望這對你有用!

+0

這很好用!我不敢相信我沒有看到。謝謝你的幫助! – 2014-10-31 12:42:00