Tuesday, August 08, 2006

用Scilab代替Matlab來玩Hidden Markov Models

最近一個唸博士班的朋友跟我聊天
他的工作上需要用到matlab來作Hidden Markov Models
但是說實話matlab這套軟體的價格實在不是我們這種小老百姓可以負擔
因此我跟他推荐了scilab這套軟體
我個人覺得scilab替代matlab是沒有問題的
而且他在linux, Mac與windows上都可以跑

很多toolbox也可以找到一些free的code
以HMM為例, 在scilab的官網就可以找到.....Here
不過這個版本已經很久了
有些小地方你可以自己改改
裏面的macro都有sci與bin檔(source與binary)
我試過裏面的bin檔是windows的版本
因此linux的朋友要重新建立bin檔

他裏面有一個build的script可以讓你重新建立
不過這裡有點小問題
這個toolbox是在scilab-2.5的時候寫的
現在的版本為4.0
大體上都不需要改變
但是4.0的function宣告必須以endfunction作結尾
因此你必須在每一個sci檔案尾端加上一行"endfunction"

另外, 他的demo檔案有一個地方判別式寫錯
a==1寫成a=1
這裡你在build的時候就會有錯誤訊息出來
你根據行號去改改便可

如果你跟我一樣要把HMM放進你的系統中
(不用每次要用都要執行loader.sce)
你可以把loader.sce放進你個人scilab的啟動程序
或是如果你有root的權限
你可以在(scilab安裝目錄)/macros下面建立一個新目錄
把所有sci檔案複製到此
作一次genlib('你剛剛建立的目錄')
然後記得把這個目錄的lib加入scilab.star這個檔案
加上這行..........load('SCI/macros/hmm/lib')............假設你建立的目錄為hmm
這樣每個啟動scilab的人都有HMM toolbox可以用啦
(不過啟動會慢一點)
你就可以開始研究HMM的奧秘啦

No comments: