簡體   English   中英

Matlab中的快速DP(Viterbi用於配置文件HMM)

[英]Fast DP in Matlab (Viterbi for profile HMMs)

我在Matlab中使用viterbi logodds計算存在效率問題。

基本上,我的問題是必須具有嵌套循環,這會使代碼減慢很多。 這是昂貴的部分:

for i=1:input_len
    for j=1:num_states
        v_m=emission_value+max_over_3_elements; %V_M
        v_i=max_over_2_elements; %V_I
        v_d=max_over_2_elements; %V_D
    end
end

我相信我不是第一個為配置文件HMM實施viterbi的人,所以也許您有一些建議。 我還研究了Matlab自己的hmmviterbi,但沒有任何啟示(也使用嵌套循環)。 我還測試了用一些原始操作替換max,但是沒有明顯的區別(實際上慢一點)。

不幸的是,循環在Matlab中的運行速度很慢(盡管在最新版本中會變得更好),而且我不認為可以輕松地對其進行矢量化/並行化,因為循環內部的操作並不依賴於其他迭代。

對於MEX來說,這似乎是一項任務-用C語言編寫它應該不會做太多工作,並且預期的加速可能會很大。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM