matlab数字带阻滤波器设计以及DSP设计(精).doc
- 文档编号:708244
- 上传时间:2023-04-29
- 格式:DOC
- 页数:5
- 大小:159KB
matlab数字带阻滤波器设计以及DSP设计(精).doc
《matlab数字带阻滤波器设计以及DSP设计(精).doc》由会员分享,可在线阅读,更多相关《matlab数字带阻滤波器设计以及DSP设计(精).doc(5页珍藏版)》请在冰点文库上搜索。
数字滤波器设计是用硬件或者软件实现的一种算法,这个算法是为了达到滤波的目的而对数字输入信号进行运算产生数字输出信号。
数字滤波器这个词是指执行滤波算法的特定硬件或者软件程序,数字滤波器经常作用的对象是数字化的模拟信号,或者刚好是存储在计算机存储器里代表某些变量的数据。
下图给出了一个具有模拟输入信号和输出信号的实时数字滤波器的简化框图。
带限模拟信号x(t)被周期地抽样,然后通过量化转化成一数字序列x(n)(n=0,1,……)。
数字处理器依据滤波器的计算算法执行滤波运算,把输入系列x(n)映射到输出
系列y(n)。
DAC把数字滤波后的输出转化成模拟值,这些模拟值接着被模拟滤波器平滑,并且消去不想要的高频分量.
利用MATLAB的强大运算功能,基于MATLAB信号处理工具的数字滤波器设计法可以快速有效的设计由软件组成的常规数字滤波器,设计方便、快捷,极大的减轻了工作量。
在设计过程中可以对比滤波器特性,随时更改参数,以达到滤波器设计的最优化。
1、MATLB仿真源程序
fs=15000;T=1/fs;>>rp=1;rs=40;
>>wp1=0.11*pi;wp2=0.81*pi;ws1=0.31*pi;ws2=0.61*pi;%数字带阻滤波器技术指标>>wc1=(2/T)*tan(wp1/2);%频率预畸变>>wc2=(2/T)*tan(wp2/2);wr1=(2/T)*tan(ws1/2);wr2=(2/T)*tan(ws2/2);>>w0=sqrt(wc1*wc2);B=wc2-wc1;
>>wp=1;%归一化通带截止频率>>ws=wp*(wr1*B)/(w0^2-wr1^2);%归一化阻带截止频率>>[N,wc]=buttord(wp,ws,rp,rs,'s');%求滤波器阶数和3dB截止频率>>[Z,P,K]=buttap(N);
>>[Md,Nd]=zp2tf(Z,P,K);%将零极点形式转换为传输形式>>[M,N]=lp2bs(Md,Nd,w0,B);%对低通滤波器进行频率变换,转换为带阻滤波器>>[h,w]=freqs(M,N);%模拟带阻滤波器的幅频响应>>xlabel('频率/Hz');ylabel('幅度');title('模拟带阻滤波器');
>>[b,a]=bilinear(M,N,15000);%对模拟滤波器双线性变换>>figure
(1);
>>freqz(b,a);[H,W]=freqz(b,a);%绘出频率响应>>axis([0,1,-100,20]);
>>figure
(2);
>>plot(W*fs/(2*pi),abs(H));gridon;
>>xlabel('频率/Hz');ylabel('幅值');
>>title('数字滤波器幅频响应
|H(ejOmega)|');
指标参数:
sl=0.5062rad,sl=0.5536rad,
pl=0.3750rad,pu=0.6750rad,
p=1dB,s=40dB
由MATLAB可得出系统函数系数:
Bz=[0.35210.18191.04160.35761.04160.18190.3521]
Az=[1.00000.35311.05470.30380.72320.06450.0095]
系统函数为:
H(Z)=(0.3521+0.1819*z-1+1.0416*z-2+0.3576*z-3+1.0416*z-4+0.1819*z+0.3521*z)/(1.0000+0.3531*z+1.0547*z+0.3038*z+
-4-5-60.7232*z+0.0645*z+0.0095*z)
DSP带阻源程序:
#include"math.h"
#defineIIRNUMBER30
#defineSIGNAL1F2200
#defineSAMPLEF8000
#definePI3.1415926-5-6-1-2-3
floatInputWave();
floatIIR();
floatfAn[IIRNUMBER]=
{0.3521,0.0575735,0.649911,-0.0395743,0.0979831,-0.0727494,-0.190606,0.100419,0.113193,-0.0413053,0.00630108,-0.0526857,-0.0620213,0.0971701,0.0441409,-0.0611411,-0.00629462,-0.0124744,-0.00798267,0.0583348,-0.000312435,-0.0489819,0.0065404,0.0078924,0.00173493,0.023966,-0.0142577,-0.0264339,0.0152646,0.00930233,-0.00260476}
floatfXn[IIRNUMBER]={0.0};
floatfInput,fOutput;
floatfSignal1,fSignal2,fSignal3;
floatfStepSignal1,fStepSignal2,fStepSignal3;
floatf2PI;
inti;
floatfIn[256],fOut[256];
intnIn,nOut;
main()
{
nIn=0;nOut=0;
fInput=fOutput=0;
f2PI=2*PI;
fSignal1=0.0;
fSignal2=0.0;
fSignal3=0.0;
fStepSignal1=PI*0.4;
fStepSignal2=PI*0.55;
fStepSignal2=PI*0.7;
while
(1)
{
fInput=InputWave();
fIn[nIn]=fInput;
nIn++;nIn%=256;
fOutput=IIR();
fOut[nOut]=fOutput;
nOut++;//breakpoint
if(nOut>=256)
{
nOut=0;
}
}
}
floatInputWave()
{for(i=IIRNUMBER-1;i>0;i--)
{fXn[i]=fXn[i-1];
}
fXn[0]=sin((double)fSignal1)+sin((double)fSignal2)+sin((double)fSignal3);
fSignal1+=fStepSignal1;
if(fSignal1>=f2PI)fSignal1-=f2PI;
fSignal2+=fStepSignal2;
if(fSignal2>=f2PI)fSignal2-=f2PI;
fSignal3+=fStepSignal3;
if(fSignal3>=f2PI)fSignal3-=f2PI;
return(fXn[0]);
}
floatIIR()
{floatfSum;
fSum=0.0;
for(i=0;i {fSum+=(fXn[i]*fAn[i]); } return(fSum); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 数字 带阻滤波器 设计 以及 DSP