使用matlab中fdatool導(dǎo)出的高通butterworth IIR濾波器系數(shù)如何在程序中進(jìn)行濾波
-
導(dǎo)出的系數(shù)為 const int NL = 10; const real64_T NUM[10] = { 0.8558457777315, -7.702611999584, 30.81044799834, -71.89104532945, 107.8365679942, -107.8365679942, 71.89104532945, -30.81044799834, 7.702611999584, ... 導(dǎo)出的系數(shù)為 const int NL = 10; const real64_T NUM[10] = { 0.8558457777315, -7.702611999584, 30.81044799834, -71.89104532945, 107.8365679942, -107.8365679942, 71.89104532945, -30.81044799834, 7.702611999584, -0.8558457777315 }; const int DL = 10; const real64_T DEN[10] = { 1, -8.688722481439, 33.55806880257, -75.61737954546, 109.553642522, -105.8293351142, 68.16455775223, -28.22860996292, 6.820250022448, -0.7324719952609 }; 在程序中進(jìn)行差分計算得到濾波結(jié)果,如下: pWave為輸入波形,pFilter的內(nèi)容也復(fù)制為輸入波形 for(i=16; i
32768) { float_Value = 32768; } if (float_Value<-32768) { float_Value = -32768; } *(pFilter+i) = (float)(float_Value);//濾波 } 得到的結(jié)果波形不對。 請教問題在哪里? 展開
全部評論(2條)
-
- 螞蟻小腿 2013-07-19 00:00:00
- 沒有看懂你寫的內(nèi)容。下面意見供參考。 通常的濾波,其實概念很簡單。 濾波器,實際上是一個移動窗口,濾波計算就是用窗寬范圍的采樣點,以濾波系數(shù)位“權(quán)”做加權(quán)平均。 例如,窗口中線對準(zhǔn) pWave[i], for (i=5;i<N-5;i++) 過濾后的 w[i] = 0.0; for (j=0;j<10;j++) w[i] = w[i] + pWave[i-5+j] * f[j]; 為加快計算,你可以先把濾波系數(shù)作歸一化處理,即,把濾波系數(shù)加起來,再讓每個系數(shù)除以這個和。用規(guī)一化的系數(shù)去濾波。這樣濾完后不需要放大或縮小振幅。 如果是2維函數(shù),濾波器就好像一只移動的帽子,帽子中線對準(zhǔn) pWave[i][k], 計算帽子范圍里的點的加權(quán)平均。 if (float_Value>32768) -- 用歸一化系數(shù)計算,能改善畸變。
-
贊(11)
回復(fù)(0)
-
- kmwk0228 2018-03-13 09:38:49
- 我跟你說用matlab的方法吧 設(shè)計完濾波器后,在文件(File)的下拉菜單選擇Export,得到矩陣SOS和G 用[b,a]=sos2tf(SOS);得到濾波器系統(tǒng)函數(shù)的分子分母多項式系數(shù),只是差了一個比例因子k。 K=cumprod(G); k=K(end); 濾波輸出結(jié)果filteredpWave可以這樣求: filteredpWave=filter(b,a,pWave)*k;
-
贊(2)
回復(fù)(0)
熱門問答
- 使用matlab中fdatool導(dǎo)出的高通butterworth IIR濾波器系數(shù)如何在程序中進(jìn)行濾波
- 導(dǎo)出的系數(shù)為 const int NL = 10; const real64_T NUM[10] = { 0.8558457777315, -7.702611999584, 30.81044799834, -71.89104532945, 107.8365679942, -107.8365679942, 71.89104532945, -30.81044799834, 7.702611999584, ...
導(dǎo)出的系數(shù)為
const int NL = 10;
const real64_T NUM[10] = {
0.8558457777315, -7.702611999584, 30.81044799834, -71.89104532945,
107.8365679942, -107.8365679942, 71.89104532945, -30.81044799834,
7.702611999584, -0.8558457777315
};
const int DL = 10;
const real64_T DEN[10] = {
1, -8.688722481439, 33.55806880257, -75.61737954546,
109.553642522, -105.8293351142, 68.16455775223, -28.22860996292,
6.820250022448, -0.7324719952609
};
在程序中進(jìn)行差分計算得到濾波結(jié)果,如下:
pWave為輸入波形,pFilter的內(nèi)容也復(fù)制為輸入波形
for(i=16; i
32768) { float_Value = 32768; } if (float_Value<-32768) { float_Value = -32768; } *(pFilter+i) = (float)(float_Value);//濾波 } 得到的結(jié)果波形不對。 請教問題在哪里? 展開
- 如何在MATLAB中進(jìn)行音頻的頻譜分析
- 如何在MATLAB中進(jìn)行音頻的頻譜分析?
- 一直很疑惑,首先我截了一段WAV格式的音頻,該如何導(dǎo)入到MATLAB軟件里? 假如我用這行代碼做分析: t=0:1/256:1;%采樣步長 y= 2+3*cos(2*pi*50*t-pi*30/180)+1.5*cos(2*pi*75*t+pi*90/180); N=length(t); %樣點個數(shù) plot(t,y); fs=256;%采樣頻率 df=fs/(N-1)... 一直很疑惑,首先我截了一段WAV格式的音頻,該如何導(dǎo)入到MATLAB軟件里? 假如我用這行代碼做分析: t=0:1/256:1;%采樣步長 y= 2+3*cos(2*pi*50*t-pi*30/180)+1.5*cos(2*pi*75*t+pi*90/180); N=length(t); %樣點個數(shù) plot(t,y); fs=256;%采樣頻率 df=fs/(N-1) ;%分辨率 f=(0:N-1)*df;%其中每點的頻率 Y=fft(y)/N*2;%真實的幅值 %Y=fftshift(Y); figure(2) plot(f,abs(Y)); 那其中第二排的函數(shù)表達(dá)式是如何得到(分析而來)的? 又比如我查詢到的MATLAB對音頻的處理: 例1:現(xiàn)以微軟自帶的“Windows XP 關(guān)機.wav”音頻信號為例,先將其復(fù)制另存到文件名為XPexit.wav的MATLAB當(dāng)前目錄中,再通過音量標(biāo)準(zhǔn)化處理后保存為XPquit.wav文件。實現(xiàn)程序如下: clear; close all; clc; [Y,F(xiàn)S,NBITS]=wavread('XPexit.WAV');% 將WAV文件轉(zhuǎn)換成變量 FS,NBITS,% 顯示采樣頻率和量化比特 Ym=max(max(max(Y)),max(abs(min(Y)))),% 找出雙聲道極值 X=Y/Ym;% 歸一化處理 wavwrite(X,F(xiàn)S,NBITS,'XPquit.wav')% 將變量轉(zhuǎn)換成WAV文件 試聽可知標(biāo)準(zhǔn)化處理后音量稍大。 但是我試過以后發(fā)現(xiàn)MATLAB提示: Error: File: Untitled.m Line: 2 Column: 1 The input character is not valid in MATLAB statements or expressions. 該如何操作呢? 我是新手學(xué)習(xí)MATLAB,有很多地方不懂,比如不懂上圖程序框和下圖的區(qū)別在哪里 希望有大神能解答我的疑問! 展開
- 如何在MATLAB中進(jìn)行音頻的頻譜分析?
- matlab中想用filter函數(shù)實現(xiàn)IIR濾波器
- matlab怎么調(diào)用fdatool的濾波器
- 就是我用fdatool設(shè)計了一個濾波器 但是在matlab的主界面上怎么使用它 就是比如說有一個函數(shù)y=sin(x) 加入噪聲之后的函數(shù)叫A,怎么讓A通過這個濾波器得到我想要的波形 答得好加分
- 如何在matlab中添加工具包
- 如何在matlab中實現(xiàn)MODBUS-rtu主機
- matlab怎么用以設(shè)計好濾波器進(jìn)行濾波
- matlab 低通濾波
- 我有采集了一組加速度數(shù)據(jù),需要對這些數(shù)據(jù)進(jìn)行10Hz低通高頻濾波,可是我一點思路都沒有,請高手指教!
- 如何在示波器上看濾波器的濾波帶
- 是不是0.707倍電壓值
- 如何在程序中提高傳感器的反應(yīng)速度
- 隧道超前地質(zhì)雷達(dá)分析中的高通濾波和低通濾波怎么搞
- 關(guān)于matlab用IIR低通濾波器對信號進(jìn)行濾波去噪問題
- 我從網(wǎng)上搜的程序老師說濾波前后的頻譜前后段對稱、還有什么橫軸要是什么坐標(biāo)(完全聽我也不懂) 求大神看我這個程序怎么把頻譜的后半對稱部分去掉 程序和圖片在下面Ft=8000;Fp=1000;Fs=1200;wp=2*pi*Fp/Ft;ws=2*pi*Fs/Ft;fp=2*Ft*tan(wp/2);fs=2*Fs*tan(wp/... 我從網(wǎng)上搜的程序老師說濾波前后的頻譜前后段對稱、還有什么橫軸要是什么坐標(biāo)(完全聽我也不懂) 求大神看我這個程序怎么把頻譜的后半對稱部分去掉 程序和圖片在下面Ft=8000;Fp=1000;Fs=1200;wp=2*pi*Fp/Ft;ws=2*pi*Fs/Ft;fp=2*Ft*tan(wp/2);fs=2*Fs*tan(wp/2);[n11,wn11]=buttord(wp,ws,1,50,'s');%求低通濾波器的階數(shù)和截止頻率[b11,a11]=butter(n11,wn11,'s');%求S域的頻率響應(yīng)的參數(shù)[num11,den11]=bilinear(b11,a11,0.5);%雙線性變換實現(xiàn)S域到Z域的變換[h,w]=freqz(num11,den11);%根據(jù)參數(shù)求出頻率響應(yīng)plot(w*8000*0.5/pi,abs(h));legend('用butter設(shè)計');grid;[y,fs,nbits]=wavread ('qzp1.wav');n=length (y);%求出語音信號的長度noise=0.01*randn(n,2);%隨機函數(shù)產(chǎn)生噪聲s=y+noise;%語音信號加入噪聲S=fft(s);%傅里葉變換z11=filter(num11,den11,s);sound(z11);m11=fft(z11);%求濾波后的信號 subplot(2,2,1);plot(abs(S),'g');title('濾波前信號的頻譜');grid;subplot(2,2,2);plot(abs(m11),'r');title('濾波后信號的頻譜');grid;subplot(2,2,3);plot(s);title('濾波前信號的波形');grid;subplot(2,2,4);plot(z11);title('濾波后的信號波形'); 展開
- 如何在VB程序中設(shè)計一個器
- 求用matlab實現(xiàn)fir濾波器(低通、高通,帶通)
- 要求輸入信號帶有噪聲,無論用那種設(shè)計方法實現(xiàn),只要濾波效果好就行了。急急急
- 用matlab中 fdatool制作的高通濾波器如何調(diào)用
- matlab中升余弦濾波器的程序不知道錯在哪了?
- % zsqEg7_7.m Fd=1e3; %碼元時隙為1ms Fs=Fd*20; %在一個碼元時隙內(nèi)采樣20次 delay=10; %濾波器延時為10個碼元時隙寬度 for r=[0, 0.25, 0.5, 0.75, 1] %滾降系數(shù)為0,0.2... % zsqEg7_7.m Fd=1e3; %碼元時隙為1ms Fs=Fd*20; %在一個碼元時隙內(nèi)采樣20次 delay=10; %濾波器延時為10個碼元時隙寬度 for r=[0, 0.25, 0.5, 0.75, 1] %滾降系數(shù)為0,0.25,0.5,0.75和1 num = rcosine(Fd,F(xiàn)s, 'fir/normal',r,delay); t=0:1/Fs:1/Fs*(length(num)-1); figure(1); plot(t,num); axis([0 0.02 -0.3 1.1]);hold on; Hw=abs(fft(num,1000)); f=(1:Fs/1000:Fs)-1; figure(2); plot(f,Hw); axis([0 1500 0 22]);hold on; end 展開
- 濾波器的系數(shù)階數(shù)以及fdatool工具問題
- 要設(shè)計一個FIR濾波器 窗函數(shù)長度與濾波器的系數(shù) 和 階數(shù)的關(guān)系是什么(數(shù)目方面)?另外,要設(shè)計32階FIR濾波器,fdatool中的specify order應(yīng)該填多少?有的說要輸入33 有的說是31,到底是哪一個?為什么?
- matlab一維離散的數(shù)據(jù)序列如何進(jìn)行低通濾波?
- 有一個離散的一維數(shù)據(jù)序列X,想要進(jìn)行低通濾波,是不是要用 y = filter(B, A, X)?那么其中B和A兩個參數(shù)是如何確定的呢? 如何確定該列數(shù)據(jù)頻域范圍,用FFT嗎? 頻譜圖是用abs(fft(X))進(jìn)行繪制嗎?怎么判斷頻譜圖中哪部分是噪聲呢?
4月突出貢獻(xiàn)榜
推薦主頁
最新話題





參與評論
登錄后參與評論