今天檢查了以往設(shè)計(jì)的濾波器,可是發(fā)現(xiàn)只有程序中保留的濾波器系數(shù),而沒有了原先設(shè)計(jì)時(shí)的濾波器頻率指標(biāo)。看著測(cè)試結(jié)果,老大懷疑濾波做的不對(duì),所以檢查了下。
重新用MATLAB設(shè)計(jì)濾波器的時(shí)候,發(fā)現(xiàn)IIR要比FIR的頻率響應(yīng)好很多,所以干脆換成IIR得了。可是IIR設(shè)計(jì)出的系數(shù)總是一個(gè)SOS matrix,在網(wǎng)上找了半天也沒查出它究竟是什么意思。后來(lái)在老大的提示下利用convert to single section,終于出現(xiàn)了我熟悉的num和den,帶入程序?qū)嶒?yàn),發(fā)現(xiàn)數(shù)據(jù)慢慢增長(zhǎng),以致最后出現(xiàn)
1.#
INF0000 (順便說(shuō)一個(gè)這個(gè)
1.#
INF0000 ,網(wǎng)上的提示大都是說(shuō)你除了0,而實(shí)際上是,當(dāng)你的數(shù)據(jù)大得超過(guò)你的變量類型的范圍時(shí),也出現(xiàn)這種情況。我剛開始float出現(xiàn)
1.#
INF0000 ,后來(lái)把float改為double,結(jié)果解決了暫時(shí)問題,最終還是會(huì)出現(xiàn)
1.#
INF0000 ,因?yàn)闉V波器的錯(cuò)誤,使得我的數(shù)值不斷的增長(zhǎng)。)。
最終還是向別人請(qǐng)教解決了IIR濾波器的設(shè)計(jì)問題。也就是利用matlab的fdatool設(shè)計(jì)之后,不能直接看filter coefficients,而是通過(guò)realise model ,出現(xiàn)了一個(gè)simulink類似的濾波器model塊,打開該model后,可以看到濾波器的結(jié)構(gòu),而且每個(gè)系數(shù)都可以打開來(lái)查看,然后根據(jù)該濾波器的結(jié)構(gòu),就可以來(lái)實(shí)現(xiàn)filter的編程了。
唉,現(xiàn)在網(wǎng)上書上好多IIR濾波器的設(shè)計(jì)問題,可是鮮有文章提到這最后關(guān)鍵的一步,不知道是它太簡(jiǎn)單了還是大家都沒有用到過(guò)它。總之我的教訓(xùn)時(shí),直接用filter coefficients設(shè)計(jì)的濾波器是不正確的,因?yàn)槲业臄?shù)據(jù)說(shuō)明這個(gè)問題。