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