我在 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 实现维特比的人,所以也许你有一些建议。我还查看了 Matlab 自己的 hmmviterbi,但没有发现(也使用嵌套循环)。我还测试了用一些原始操作替换 max ,但没有明显差异(实际上有点慢)。