2011-11-13 53 views
2

我正在研究一個C++項目,該項目通常需要高斯pdf的計算,給定數據點x和現有的高斯分佈G.參考指數函數exp,這是很昂貴的。即使我記錄,日誌功能也是昂貴的。有關我如何做到這一點的任何建議?如何優化高斯pdf的計算?

回答

3

矢量化了,即使用SIMD計算並行的指數或日誌,您還可以使用優化的基於近似SSE explog如果你並不需要極高的精度,對於一個簡單的LIB可以發現here

但是,當涉及到優化,配置文件首先,這樣你解決問題,而不是你認爲是問題。

0

日誌PDF並不昂貴,如果你使用下面的快捷鍵:

log_pdf = log (1.0/ (sigma * 2.0 * pi)) - 0.5 * square(x-mean)/(sigma*sigma); 

開始,你可以看到,包含日誌術語的部分可以用於預先計算任何特定的PDF,其餘部分也是如此。因此,對於標準差和任何給定值的平均值:

log_k = log (1.0/ (sigma * 2.0 * pi)); 
half_over_sigma_sq= 0.5/(sigma*sigma) 

然後評估爲許多不同的x值的時候,就可以計算出剛剛

log_pdf = log_k - half_over_sigma_sq * square(x-mean); 

這招是使用的所有時間統計建模。