|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
以下是我寫的二階級聯(lián)濾波器的程序,大家看看是否有錯(cuò)誤 |
| 作者:fengzhiyu 欄目:DSP技術(shù) |
//二階級聯(lián)濾波器 //返回值:無 //參數(shù):b[j][i]為濾波器分子系數(shù);a[j][i]為濾波器分母系數(shù);n為濾波器每節(jié)的階數(shù);na為濾波器的級聯(lián)數(shù) //sound[]為所要處理的數(shù)據(jù)源;len為輸入數(shù)據(jù)的長度;px[]為保存的濾波器的前n+1個(gè)輸入值;py[]為保存的濾波器的前n+1個(gè)輸出值; //其中j為第j個(gè)級聯(lián)節(jié),i為分子多項(xiàng)式的第i個(gè)系數(shù);px[j][]={sound[k],sound[k-1]...sound[k-n]; //py[j][]={y[k-1],y[k-2]...y[k-n]} void CPlaySound::TwoSectionsFliter(double* b,double* a,int n,int na,double* sound,int len,double* px,double* py) { // int n,na,len; // float b[],a[],px[],py[]; int i,j,k,n1; n1=n+1; for(j=0;j<na;j++) { for(k=0;k<len;k++) { px[j*n1+0]=sound[k]; sound[k]=b[j*n1+0]*px[j*n1+0]; for(i=1;i<=n;i++) { sound[k]+=b[j*n1+i]*px[j*n1+i]-a[j*n1+i]*py[j*n+i-1]; } for(i=n;i>=2;i--) { px[j*n1+i]=px[j*n1+i-1]; py[j*n+i-1]=py[j*n+i-2]; } px[j*n1+1]=px[j*n1+0]; py[j*n+0]=sound[k]; } } } sound[k]一開始是輸入數(shù)據(jù),經(jīng)過處理存放的是濾波后的數(shù)據(jù) 我覺得自己的程序沒有問題,但是經(jīng)過示波器掃頻以后,卻發(fā)現(xiàn)實(shí)際的頻響與理想的頻響差距較大,大家有沒有遇到過類似問題,請問可能該如何解決,硬件可能出問題嗎? |
| 2樓: | >>參與討論 |
| 作者: fengzhiyu 于 2006/2/22 11:13:00 發(fā)布:
問題解決了 問題終于解決了,并不是軟件的問題,^_^ |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |