利用matlab设计巴特沃斯低通滤波器
matlab滤波器代码

数字信号处理:已知通带截止频率fp=5kHz,通带最大衰减ap=2dB,阻带截止频率fs=2kHz,阻带最小衰减as=30dB,按照以上技术指标设计巴特沃斯低通滤波器:wp=2*pi*5000;ws=2*pi*12000;Rp=2;As=30;[N,wc]=buttord(wp,ws,Rp,As,'s');[B,A]=butter(N,wc,'s');k=0:511;fk=0:14000/512:14000;wk=2*pi*fk;Hk=freqs(B,A,wk);subplot(2,2,1);plot(fk/1000,20*log10(abs(Hk)));grid onxlabel('频率(kHz)');ylabel('幅度(dB)')axis([0,14,-40,5])切比雪夫1型低通滤波器:wp=2*pi*3000;ws=2*pi*12000;Rp=0.1;As=60;[N1,wpl]=cheb1ord(wp,ws,Rp,As,'s');%cheb1ord,里面的是1,不是L[B1,A1]=cheby1(N1,Rp,wpl,'s');subplot(2,2,1);fk=0:12000/512:12000;wk=2*pi*fk;Hk=freqs(B1,A1,wk);plot(fk/1000,20*log10(abs(Hk)));grid onxlabel('频率(kHz)');ylabel('幅度(dB)')axis([0,12,-70,5])椭圆模拟低通滤波器:wp=2*pi*3000;ws=2*pi*12000;Rp=0.1;As=60;[N,wpo]=ellipord(wp,ws,Rp,As,'s');[B,A]=ellip(N,Rp,As,wpo,'s');subplot(2,2,1);fk=0:12000/512:12000;wk=2*pi*fk;Hk=freqs(B1,A1,wk);plot(fk/1000,20*log10(abs(Hk)));grid onxlabel('频率(kHz)');ylabel('幅度(dB)')axis([0,12,-70,5])p195-14wp=2*4/80;ws=2*20/80;rp=0.5;rs=45;[N,wc]=buttord(wp,ws,rp,rs);[B,A]=butter(N,wc);[hk,wk]=freqz(B,A);fk=wk/pi*40;plot(fk,20*log10(abs(hk)));axis([0,30,-100,0])xlabel('频率(kHZ)');ylabel('幅度(db)');grid on P195-16wp=2*325/2500;ws=2*225/2500;rp=1;rs=40;[N,wc]=ellipord(wp,ws,rp,rs);[B,A]=ellip(N,rp,rs,wc);[hk,wk]=freqz(B,A);fk=wk/pi*40;plot(fk,20*log10(abs(hk)));axis([0,30,-100,0])xlabel('频率(kHZ)');ylabel('幅度(db)');grid onP195-15wp=2*4/80;ws=2*20/80;rp=0.5;rs=45;[N,wc]=cheb1ord(wp,ws,rp,rs);[B,A]=cheby1(N,rp,wc);[hk,wk]=freqz(B,A);fk=wk/pi*40;plot(fk,20*log10(abs(hk)));axis([0,30,-100,0])xlabel('频率(kHZ)');ylabel('幅度(db)');grid on 切比雪夫低通滤波器wp=2*pi*3000;ws=2*pi*12000;rp=0.1;as=60;[N1,wp1]=cheb1ord(wp,ws,rp,as,'s');[B1,A1]=cheby1(N1,rp,wp1,'s');subplot(2,2,1);fk=0:12000/512:12000;wk=2*pi*fk;hk=freqs(B1,A1,wk);plot(fk/1000,20*log10(abs(hk)));grid onxlabel('频率(kHZ)');ylabel('幅度(db)');axis([0,12,-70,5])双音频检测audiofile='test.wav'[in_audio,fs,bits]=wavread(audiofile); [b,a]=cheby1(5,0.1,0.3);out_audio=filter(b,a,in_audio);sound(out_audio,fs,bits);wavwrite(out_audio,fs,bits,'test_out'); xk1=fft(in_audio,512);xk2=fft(out_audio,512);subplot(2,1,1);stem(abs(xk1));subplot(2,1,2);stem(abs(xk2));巴特沃斯模拟高通滤波器。
基于Matlab的巴特沃斯滤波器设计

龙源期刊网
基于Matlab的巴特沃斯滤波器设计
作者:王大伟贾荣丛王划一
来源:《现代电子技术》2012年第21期
摘要:为了得到较纯净的真实信号,对巴特沃斯模拟滤波器的幅频特性、设计方法及设计步骤进行了研究,利用Matlab程序,设计了巴特沃斯模拟滤波器,给出了Matlab设计程序,并分析了巴特沃斯模拟滤波器的幅频特性。
利用Matlab程序绘制了巴特沃斯模拟滤波器的幅频特性曲线,并利用Matlab实现了模拟滤波器原型到模拟低通、高通、带通、带阻滤波器的转换。
由模拟滤波器原型设计模拟高通滤波器的实例说明了滤波器频率转换效果。
关键词:模拟滤波器;巴特沃斯滤波器; Matlab;幅频特性
滤波器是一种允许某一特定频带内的信号通过,而衰减此频带以外的一切信号的电路,处理模拟信号的滤波器称为模拟滤波器。
在现代通信系统中,滤波是最常用的一种信号处理技术,一般用来衰减信号频谱中需要消除的部分,得到较纯净的真实信号。
利用MATLAB设计巴特沃斯低通数字滤波器

利用MATLAB设计巴特沃斯低通数字滤波器引言数字滤波器是数字信号处理中的重要组成部分,可以用于去除信号中的噪音和不需要的频率成分。
巴特沃斯滤波器是一种常见的数字滤波器,被广泛应用于信号处理领域。
本文将介绍如何利用MATLAB设计巴特沃斯低通数字滤波器,并给出详细的步骤和示例代码。
设计步骤利用MATLAB设计巴特沃斯低通数字滤波器主要包括以下步骤:1.设计滤波器的参数2.计算滤波器的传递函数3.绘制滤波器的幅频响应曲线4.通过频域图像观察滤波器的性能下面将分别介绍每个步骤的详细操作。
设计滤波器的参数巴特沃斯低通数字滤波器的参数包括截止频率和阶数。
截止频率决定了滤波器的通频带,阶数决定了滤波器的陡峭程度。
通过MATLAB的butter()函数可以方便地设计巴特沃斯低通数字滤波器。
该函数的参数为滤波器的阶数和截止频率。
示例代码如下:order = 4; % 阶数cutoff_freq = 0.4; % 截止频率[b, a] = butter(order, cutoff_freq);计算滤波器的传递函数通过设计参数计算得到滤波器的传递函数。
传递函数是一个复数,包括了滤波器的频率响应信息。
使用MATLAB的freqz()函数可以计算滤波器的传递函数。
该函数的参数为滤波器的系数b和a,以及频率取样点的数量。
示例代码如下:freq_points = 512; % 频率取样点数量[h, w] = freqz(b, a, freq_points);绘制滤波器的幅频响应曲线经过计算得到的传递函数能够提供滤波器的幅频响应信息。
通过绘制幅频响应曲线,可以直观地观察滤波器的频率特性。
使用MATLAB的plot()函数可以绘制滤波器的幅频响应曲线。
该函数的参数为频率点和传递函数的幅值。
示例代码如下:magnitude = abs(h); % 幅值plot(w/pi, magnitude);xlabel('归一化频率');ylabel('幅值');title('巴特沃斯低通数字滤波器幅频响应');通过频域图像观察滤波器的性能通过绘制滤波器的频域图像,可以直观地观察滤波器对不同频率的信号的响应情况。
基于matlab的切比雪夫及巴特沃斯低通高通滤波器的设计

巴特沃斯低通、切比雪夫低通、高通IIR滤波器设计05941401 1120191454 焦奥一、设计思路IIR滤波器可以分为低通、高通、带通、带阻等不同类型的滤波器,而以系统函数类型又有巴特沃斯、切比雪夫等滤波器。
其中巴特沃斯较为简单,切比雪夫较为复杂;低阶比高阶简单,但却有着不够良好的滤波特性。
在满足特定的指标最低要求下,低阶、巴特沃斯滤波器能更大程度地节省运算量以及复杂程度。
滤波器在不同域内分为数字域和模拟域。
其中数字域运用最广泛。
在设计过程中,一般是导出模拟域的滤波器,之后通过频率转换变为数字域滤波器,实现模拟域到数字域的传递。
在针对高通、带通、带阻的滤波器上,可以又低通到他们的变换公式来进行较为方便的转换。
综上,IIR滤波器的设计思路是,先得到一个满足指标的尽可能简单的低通模拟滤波器,之后用频域变换转换到数字域。
转换方法有双线性变换法、冲激响应不变法等。
虽然方法不同,但具体过程有很多相似之处。
首先将数字滤波器的指标转换为模拟滤波器的指标,之后根据指标设计模拟滤波器,再通过变换,将模拟滤波器变换为数字滤波器,是设计IIR滤波器的最基本框架。
以下先讨论较为简单的巴特沃斯低通滤波器。
二、巴特沃斯低通滤波假设需要一个指标为0~4hz内衰减小于3db、大于60hz时衰减不小于30db的滤波器。
其中抽样频率为400hz。
以双线性变换方法来设计。
首先将滤波器转换到模拟指标。
T =1f f ⁄=1400Ωf ′=2ff f =8ff f =Ωf ′f =0.02fΩf ′=2ff f =120ff f =Ωf ′f =0.3f根据双线性变换Ω=2f tan (f 2) 得到Ωf =25.14Ωf =407.62这就得到了模拟域的指标。
由巴特沃斯的方程Α2(Ω)=|f f (f Ω)|2=11+(ΩΩf )2f20ff |f f (f Ω)|=−10ff [1+(ΩΩf)2f] {20ff |f f (f Ωf )|≥−320ff |f f (f Ωf )|≤−30ff得到{ −10ff [1+(Ωf Ωf)2f ]≥−3−10ff [1+(Ωf Ωf )2f]≤−30当N取大于最小值的整数时,解出N=2,因此为二阶巴特沃斯低通滤波器。
用MATLAB设计巴特沃斯低通滤波器

⽤MATLAB设计巴特沃斯低通滤波器⽤MATLAB 设计巴特沃斯低通滤波器1 巴特沃斯低通滤波器的特性⼀个理想低通滤波器的幅频特性如图3-80的阴影部分所⽰。
为了实现这个理想低通特性,需要在从0~ωC 的整个频带内增强增益,在ω>ωC 增益要降到0。
实际上,理想滤波器是不可能实现的。
图3-78是实际滤波器的幅频特性。
但是实际滤波器的特性愈接近理想特性愈好,巴特沃斯(Butterworth )滤波器就是解决这个问题的⽅法之⼀。
巴特沃斯滤波器以巴特沃斯函数来近似滤波器的系统函数,巴特沃斯的低通模平⽅函数为:221|()|1,2,,1(/)NC H j N j j ωωω==+ (3-138)式中以C ω是滤波器的电压-3dB 点或半功率点。
不同阶次的巴特沃斯滤波器特性如图3-79(a)所⽰。
4阶巴特沃斯滤波器的极点分布如图3-79(b)所⽰。
巴特沃斯滤波器幅频响应有以下特点:最⼤平坦性:在0=ω附近⼀段范围内是⾮常平直的,它以原点的最⼤平坦性来逼近理想低通滤波器。
通带、阻带下降的单调性。
这种滤波器具有良好的相频特性。
3dB 的不变性:随着N 的增加,频带边缘下降越陡峭,越接近理想特性。
但不管N 是多少,幅频特性都通过-3dB 点。
极点配置在半径为ωC 的圆上,并且均匀分布。
左半平⾯上的N 个极点是)(s H 的极点,右半平⾯上的N 个极点是)(s H -的极点。
2 巴特沃斯低通滤波器的实现为使巴特沃斯滤波器实⽤,我们必须能够实现它。
⼀个较好的⽅法是将巴特沃斯滤波器函数化成若⼲⼆阶节级联,其中每⼀节实现⼀对共轭复极点。
通过将极点以共轭复数的形式配对,对所有的每⼀个⼆阶节都具有实系数。
1图3-78 低通滤波器的幅频特性图3-80所⽰运算放⼤器电路为实现⼀对共轭极点提供了很好的⽅法。
电路的系统函数为202202121121122121)(1)11(1)(ωωω++=+++=s Qs C C R R s C R C R s C C R R s H (3-139)式中,ω0是S 平⾯原点与极点之间的距离,Q 被称为电路的“品质因数”,它提供了对响应峰值尖锐程度的⼀种度量。
matlab数字信号处理85个实用案例精讲

matlab数字信号处理85个实用案例精讲MATLAB数字信号处理85个实用案例精讲MATLAB是一种强大的数学软件,广泛应用于数字信号处理领域。
本文将介绍85个实用案例,涵盖了数字信号处理的各个方面,包括信号生成、滤波、频谱分析、时频分析、数字滤波器设计等。
1. 信号生成案例:生成正弦信号在MATLAB中,可以使用sin函数生成正弦信号。
例如,生成频率为100Hz,幅度为1的正弦信号,代码如下:t = 0:0.001:1;f = 100;x = sin(2*pi*f*t);2. 滤波案例:低通滤波低通滤波器可以滤除高频信号,保留低频信号。
在MATLAB中,可以使用fir1函数设计低通滤波器。
例如,设计截止频率为100Hz的低通滤波器,代码如下:fs = 1000;fc = 100;N = 100;b = fir1(N, fc/(fs/2), 'low');3. 频谱分析案例:计算功率谱密度功率谱密度是信号在频域上的能量分布。
在MATLAB中,可以使用pwelch函数计算功率谱密度。
例如,计算频率为100Hz的正弦信号的功率谱密度,代码如下:t = 0:0.001:1;f = 100;x = sin(2*pi*f*t);[Pxx, f] = pwelch(x, [], [], [], 1000);4. 时频分析案例:计算短时傅里叶变换短时傅里叶变换可以分析信号在时间和频率上的变化。
在MATLAB中,可以使用spectrogram函数计算短时傅里叶变换。
例如,计算频率为100Hz的正弦信号的短时傅里叶变换,代码如下:t = 0:0.001:1;f = 100;x = sin(2*pi*f*t);spectrogram(x, [], [], [], 1000, 'yaxis');5. 数字滤波器设计案例:设计巴特沃斯滤波器巴特沃斯滤波器是一种常用的数字滤波器,可以实现平滑滤波和带通滤波。
Butterworth模拟低通滤波器设计

例:利用AF-BW filter及脉冲响应不变法设计一DF,满足
Wp=0.2p, Ws=0.6p, Ap2dB, As15dB 。
%determine the DF filter [numd,dend]=impinvar(numa,dena,Fs); %plot the frequency response w=linspace(0,pi,1024); h=freqz(numd,dend,w); norm=max(abs(h)); numd=numd/norm; plot(w/pi,20*log10(abs(h/norm))); xlabel('Normalized frequency'); ylabel('Gain,dB'); %computer Ap As of the designed filter w=[Wp Ws]; h=freqz(numd,dend,w); fprintf('Ap= %.4f\n',-20*log10( abs(h(1)))); fprintf('As= %.4f\n',-20*log10( abs(h(2))));
Ap=1.00dB, As=40dB
模拟高通滤波器的设计
MATLAB实现 [numt,dent] = lp2hp(num,den,W0)
例: 设计满足下列条件的模拟BW型高通滤波器 fp=5kHz, fs=1kHz, Ap1dB, As 40dB。
%高通滤波器的设计 wp=1/(2*pi*5000);ws=1/(2*pi*1000);Ap=1;As=40; [N,Wc]=buttord(wp,ws,Ap,As,'s'); [num,den] = butter(N,Wc,'s'); disp('LP 分子多项式'); fprintf('%.4e\n',num); disp('LP 分母多项式'); fprintf('%.4e\n',den); [numt,dent] = lp2hp(num,den,1); disp('HP 分子多项式'); fprintf('%.4e\n',numt); disp('HP 分母多项式'); fprintf(‘%.4e\n’,dent);
毕业设计(论文)-基于MATLAB做巴特沃斯低通滤波器

分类号编号烟台大学毕业论文基于MATLAB设计巴特沃斯低通滤波器The Design of Butterworth Low-passing Filter Based on MA TLAB申请学位:院系:专业:姓名:学号:指导老师:2011年05 月26日烟台大学基于MA TLAB设计巴特沃斯低通滤波器姓名:导师:2011年05月26日烟台大学烟台大学毕业论文任务书院(系):光电信息科学技术学院[摘要]滤波器设计是数字信号处理的重要内容。
在MATLAB软件中有丰富的滤波器设计的相关命令,掌握相关的方法后可以提高我们的工作效率。
首先对巴特沃斯低通滤波器的特性进行研究,然后用MATLAB信号处理工具箱提供的函数设计出巴特沃斯低通滤波器模型,并对具体实例进行分析,使得巴特沃斯滤波器的设计更加快捷、直观、简单。
[关键词]巴特沃斯低通滤波器; MATLAB仿真;[Abstract]First,analyse the characteristics of Butterworth low-pass filter, second use MATLAB signal processing toolbox design the mode of Butterworth low - pass filter ,to study it though an explme. The method makes the design of Butterw orth filter quicklier ,more intuitively,and simp -lier.[Keywords] Butterworth low-pass filter; MATLAB simulation;目录1 绪论 (1)1.1 引言 (1)1.2 数字滤波器的设计原理 (1)1.3数字滤波器的应用 (2)1.4MATLAB的介绍 (3)1.5本文的工作及安排 (3)2 滤波器分类及比较 (5)2.1滤波器的设计原理 (5)2.2 滤波器分类 (5)2.3四种类型模拟滤波器的比较 (9)3巴特沃斯低通滤波器 (11)3.1巴特沃斯低通滤波器的设计原理 (11)4 MATLAB仿真及分析 (15)4.1 MATLAB工具箱函数 (15)4.2 巴特沃斯低通滤波器的MATLAB仿真 (15)5 结论与展望 (19)5.1 总结 (19)5.2 展望 (19)致谢 (20)参考文献 (21)1 绪论1.1 引言凡是有能力进行信号处理的装置都可以称为滤波器。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三峡大学课程设计报告专业班级 20091421课程数字信号处理课程设计学号 2009142116 学生姓名姜祥奔指导教师王露2012年 5 月平时成绩(20%)报告成绩(40%)答辩成绩(40%)总成绩数字信号处理课程设计实验一:用双线性变换法和脉冲响应不变法设计IIR 数字滤波器采用双线性变换法设计一个巴特沃斯数字低通滤波器,要求:通带截止频率100Hz ,阻带截止频率200Hz ,通带衰减指标Rp 小于2dB ,阻带衰减Rs 大于15dB ,滤波器采样频率Fs=500Hz 。
绘制频率响应曲线。
理论部分:(原理及设计过程)第一步:论ω和f 的关系及数字域性能的公式表示。
模拟频率与数字频率之间为线性关系,T f T fT T s,101,24-===Ω=πω为抽样周期,故 ππω4.0500110021=⨯⨯==c c kHz f 对应于 修正后)2t a n (21c T ω=Ω ππω8.0500120021=⨯⨯==st st kHz f 对应于 修正后)2tan(21st T ω=Ω 按衰减的定义2)()(log 204.0010≤πj j e H e H 15)()(log 208.0010≥πj j e H e H 设0=ω处频率响应幅度归一化为1,即1)(0=j e H ,则上两式变成2)(log 204.010-≥πj e H (1)15)(log 208.010-≤πj e H (2)这就是数字滤波器的性能指标的表达式。
2 下面把数字低通滤波器的性能要求转变为“样本”模拟低通滤波器的性能要求。
由T Ω=ω,按修正式)()(T jH e H a j ωω≈,设没有混叠效应(即混叠效应设计完成后再进行校验)则有πωωω≤Ω==),()()(j H T j H e H a a j (3)利用(3)式,由(1)、(2)式可写出模拟低通滤波器的指标为2)102(log 20)4.0(log 2021010-≥⨯=ππj H Tj H a a …….(4) 15)104(log 20)8.0(log 2021010-≤⨯=ππj H T jH a a …(5) 3 计算“样本”模拟低通滤波器所需的阶数N 及3dB 截止频率C Ω。
巴特沃思低通滤波器的幅度平方函数是N C a j H 22)(11)(ΩΩ+=Ω以分贝形式表示上式,即⎥⎦⎤⎢⎣⎡ΩΩ+-=ΩN C a j H 21010)(1log 10)(log 20 ……………(6) 把求出的性能指标关系(4)式、(5)式代入(6)式得2)(1log 102110-≥⎥⎦⎤⎢⎣⎡ΩΩ+-N C 15)(1log 102210-≤⎥⎦⎤⎢⎣⎡ΩΩ+-N C 先用等号来满足指标,可得N C21)(1ΩΩ+=2.010 N C22)(1ΩΩ+=5.110 解此两方程,得N=1.3709, N 是滤波器阶次,必须取整数,为了满足或超过给定指标,故应选取比求出的N 大一点的整数,故取N =2,代入通带条件(6-118a )式,得C Ω=1.038310⨯,即N =2, C Ω=1.038310⨯ (7)显然,利用(7)式的N 和C Ω,阻带指标正好满足,而通带指标则低于2dB ,这正好对减少冲激响应不变法造成的频谱混叠效应是有利的。
程序部分:wp=100*2*pi; %数字滤波器的通带截止频率ws=200*2*pi; %数字滤波器的阻带截止频率Rp=2;As=15; %输入滤波器的通阻带衰减指标%转换为模拟滤波器指标Fs=500;T=1/Fs;wp1=wp*T;ws1=ws*T;Omgp=(2/T)*tan(wp1/2); %原型通带频率预修正Omgs=(2/T)*tan(ws1/2); %原型通阻频率预修正%模拟原型滤波器计算[n, Omgc]=buttord(Omgp, Omgs,Rp,As,'s'); %计算阶数n 和截止频率[z0,p0,k0]=buttap(n); %归一化原型设计[ba,aa]=zp2tf(z0,p0,k0); %把滤波器零极点转化为传递函数模型[ba1,aa1]=lp2lp(ba,aa, Omgc); %变换为模拟低通滤波器系数b,a%或者[ba1,aa1]=butter(n, Omgc,’s ’);%用双线性变换法计算数字滤波器系数[bd,ad]=bilinear(ba1,aa1,Fs) ; %用双线性变换法求数字滤波器系数b,a%求数字系统的频率特性[H,w]=freqz(bd,ad);plot(w*Fs/(2*pi),20*log10(abs(H)));ylabel('增益/dB');xlabel('频率(Hz )');title('数字滤波器幅度响应');grid on;数字滤波器的频率响应图:实验二:用窗函数法设计FIR 数字滤波器选择合适的窗函数设计一个FIR 数字低通滤波器,要求:带通截止频率为Wp=0.2π,阻带截止频率Ws=0.3π,阻带衰减不小于40dB ,通带衰减不大于3dB 。
描绘滤波器的幅频响应曲线。
理论部分:(原理及设计过程)1.数字频率。
通带截止频率:π2.0=p w阻带截止频率:π3.0=s w阻带衰减:dB 402=δ2.求)(n h d 。
设)(jw d e H 为理想线性相位滤波器⎪⎩⎪⎨⎧≤-其它,0,)(c jw jwd w we e H τ 首先由所需低通滤波器的过渡带求理想低通滤波器的截止频率c Ω(由于c Ω为两个肩峰值处的频率中点,而由p Ω到s Ω之间的过渡带宽并非两个肩峰间的频率差,因而以下求出的c Ω有一定的近似),并将其转化为对应的数字频率为π25.0)(21=+=s p c w w w 由此可得[]⎰--⎪⎪⎩⎪⎪⎨⎧=≠--==c c w w c c n jw d n w n n w n dw e n h ππτττππτ,,)(sin )(121)()( 其中τ为线性相位所必需的移位,且21-=N τ。
3.求窗函数。
由阻带衰减dB 402=δ,查课本中的表7-3可选汉宁窗,其阻带最小衰减44dB 满足要求。
所要求的过度带宽(数字频域)π1.0=-=∆p s w w w 由于汉宁窗过渡带宽满足N w π2.6=∆ 所以622.6=∆=wN π 3121=-=N τ 4.求)(n h 。
由汉宁窗表达式)(n w 确定FIR 滤波器的)(n h 。
汉宁窗 )()]12cos(1[21)(n R N n n w N --=π )21()]21(sin[)(----=N n N n w n h c d π 所以 )(*)()(n w n h n h d =5.由)(n h 求得)(jw e H ,并检验各项指标是否满足要求。
如不满足要求,则要改变N ,或改变窗形状(或两者都改变),然后重新计算。
\程序部分:子函数1:function hd=ideal_lp(wc,M);alpha = (M-1)/2;n = [0:1:(M-1)];m = n - alpha +eps; % add smallest number to avoi divided by zerohd = sin(wc*m)./(pi*m);子函数2:function[db,mag,pha,w]=freqz_m4(b,a)[H,w]=freqz(b,a,1000,'whole');H=(H(1:1:501));w=(w(1:1:501));mag=abs(H);db=20*log10((mag+eps)/max(mag));pha=angle(H);主程序:clear allWp=0.2*pi;Ws=0.3*pi;tr_width=Ws-Wp; %过渡带宽度N=ceil(6.2*pi/tr_width)+1; %滤波器长度n=0:1:N-1;Wc=(Ws+Wp)/2; %理想低通滤波器的截止频率hd=ideal_lp(Wc,N); %理想低通滤波器的单位冲激响应w_ham=(hann(N))'; %汉宁窗h=hd.*w_ham; %截取得到实际的单位脉冲响应[db,mag,pha,w]=freqz_m4(h,[1]); %计算实际滤波器的幅度响应delta_w=2*pi/1000;Ap=-(min(db(1:1:Wp/delta_w+1))); %实际通带纹波As=-round(max(db(Ws/delta_w+1:1:501))); %实际阻带纹波subplot(221)stem(n,hd) %火柴棍图title('理想单位脉冲响应hd(n)')subplot(222)stem(n,w_ham)title('汉宁窗w(n)')subplot(223)stem(n,h)title('实际单位脉冲响应h(n)')subplot(224)plot(w/pi,db)title('幅度响应(dB)')axis([0,1,-100,10])FIR低通滤波器特性图:心得体会:不得不承认,这一次数字信号处理的课程设计过程是艰苦的,但同时又是收获丰富的。
因为我们是上学期修的数字信号处理,而课程设计却安排在下学期,经过半年的时间,很多学过的东西都变得模糊的。
刚选定课题时,自己甚至连题目的意思都看不懂,“什么是双线性变换法?”“什么是巴特沃思数字低通滤波器?”,一系列的问号在头脑中打转。
Matlab程序设计经验的缺乏也曾一度令自己失去持续做程题的勇气。
现在,虽然不能拍着胸脯说自己弄通了如何用双线性变换法设计巴特沃思数字滤波器,也不敢说完全通悟利用窗函数设计一个FIR 数字低通滤波器的方法,但庆幸的是自己在课程设计这一环节中学会了独立学习知识的方法,更体验到了从“迷惘——坚定——求索——明悟”的乐趣,也发现了以前学习数字信号处理时一直被自己忽视的许多问题。
如模拟频率f,模拟角频率Ω及数字频率ω三者的概念区别及相互换算问题,在这一次课程设计中就是必须弄清楚的问题,不然一切寸步难行。