数字信号处理巴特沃斯滤波器的汉明窗设计 - 图文

更新时间:2023-12-06 01:15:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数字信号处理课程设计-巴特沃斯hamming

1 绪论

1.1课程设计背景

《数字信号处理》课程是一门理论和技术发展十分迅速、应用非常广泛的前沿性学科,他的理论性和实践性都很强,他的特点是:要求的数学知识多,包括高等代数、数值分析、概率统计、随机过程等。要求掌握的基础知识强,网络理论、信号与系统是本课程的理论基础与其他学科密切相关,即与通信理论、计算机、微电子技术不可分,又是人工智能、模式识别、神经网络等新兴学科的理论基础之一。学生在学习这门课程时,普遍感到数字信号处理的概念抽象,对其中的分析方法与基本理论不能很好地理解与掌握。因此,如何帮助学生理解与掌握课程中的基本概念、基本原理、基本分析方法以及综合应用所学知识解决实际问题的能力,是本课程教学中所要解决的关键问题。为了配合《数字信号处理》专业基础课的理论教学,我们在电子信息工程专业教学计划中安排了二周的《数字信号处理》课程设计,他是针对《数字信号处理》的基础理论和算法进行实践环节的一个综合训练,以便学习巩固所学的知识,加强理论和实际结合的能力,培养学生的综合设计能力与实际工作能力。Matlab语言是一种广泛应用于工程计算及数值分析 领域的新型高级语言,Matlab功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎。特别是Matlab还具有信号分析工具箱,不需具备很强的编程能力,就可以很方便地进行信号分析、处理和设计。因此,选择用Matlab进行课程设计。

1.2 课程设计目的

1. 掌握数字信号处理的基本概念,基本理论和基本方法。 2. 熟悉离散信号和系统的时域特性。 3. 掌握序列快速傅里叶变换方法。

4. 学会MATLAB的使用,掌握MATLAB的程序设计方法。 5. 掌握利用MATLAB对语音信号进行频谱分析。 6. 掌握滤波器的网络结构。

1

数字信号处理课程设计-巴特沃斯hamming

2 课程设计原理

2.1用窗函数法设计FIR滤波器

根据过渡带宽及阻带衰减要求,选择窗函数的类型并估计窗口长度N(或阶数M=N-1),窗函数类型可根据最小阻带衰减As独立选择,因为窗口长度N对最小阻带衰减As没有影响,在确定窗函数类型以后,可根据过渡带宽小于给定指标确定所拟用的窗函数的窗口长度N,设待求滤波器的过渡带宽为Δw,它与窗口长度N近似成反比,窗函数类型确定后,其计算公式也确定了,不过这些公式是近似的,得出的窗口长度还要在计算中逐步修正,原则是在保证阻带衰减满足要求的情况下,尽量选择较小的N,在N和窗函数类型确定后,即可调用MATLAB中的窗函数求出窗函数wd(n)。

根据待求滤波器的理想频率响应求出理想单位脉冲响应hd(n),如果给出待求滤波器频率应为Hd,则理想的单位脉冲响应可以用下面的傅里叶反变换式求出:

hd(n)?12?????Hd(ej?)ej?nd?在一般情况下,hd(n)是不能用封闭公式表示的,需要采用数值方法表示;从w=0到w=2π采样N点,采用离散傅里叶反变换(IDFT)即可求出。

用窗函数wd(n)将hd(n)截断,并进行加权处理,得到

如果要求线性相位特性, 则h(n)还必须满足:

根据上式中的正、 负号和长度N的奇偶性又将线性相位FIR滤波器分成四类。 要根据所设计的滤波特性正确选择其中一类。 例如, 要设计线性相位低通特性可选择h(n)=h(N-1-n)一类,而不能选h(n)=-h(N-1-n)一类。

2

h(n)?hd(n)?(n)h(n)??h(N?1?n) 数字信号处理课程设计-巴特沃斯hamming

验算技术指标是否满足要求,为了计算数字滤波器在频域中的特性,可调用freqz子程序,如果不满足要求,可根据具体情况,调整窗函数类型或长度,直到满足要求为止。

2.2用双线性变换法设计IIR数字滤波器

脉冲响应不变法的主要缺点是产生频率响应的混叠失真。这是因为从S平面到Z平面是多值的映射关系所造成的。为了克服这一缺点,可以采用非线性频率压缩方法,将整个频率轴上的频率范围压缩到-π/T~π/T之间,再用z=esT转换到Z平面上。也就是说,第一步先将整个S平面压缩映射到S1平面的-π/T~π/T一条横带里;第二步再通过标准变换关系z=es1T将此横带变换到整个Z平面上去。这样就使S平面与Z平面建立了一一对应的单值关系,消除了多值变换性,也就消除了频谱混叠现象,映射关系如图2-1所示。

图2-1双线性变换的映射关系

为了将S平面的整个虚轴jΩ压缩到S1平面jΩ1轴上的-π/T到π/T段上,可以通过以下的正切变换实现

(2-1)

式中,T仍是采样间隔。

当Ω1由-π/T经过0变化到π/T时,Ω由-∞经过0变化到+∞,也即映射了整个jΩ轴。将式(2-1)写成

将此关系解析延拓到整个S平面和S1平面,令jΩ=s,jΩ1=s1,则得

3

数字信号处理课程设计-巴特沃斯hamming

再将S1平面通过以下标准变换关系映射到Z平面 z=es1T

从而得到S平面和Z平面的单值映射关系为:

(2-2)

(2-3)

式(2-2)与式(2-3)是S平面与Z平面之间的单值映射关系,这种变换都是两个线性函数之比,因此称为双线性变换

式(2-1)与式(2-2)的双线性变换符合映射变换应满足的两点要求。 首先,把z=ejω,可得

(2-4)

即S平面的虚轴映射到Z平面的单位圆。 其次,将s=σ+jΩ代入式(2-4),得

因此

由此看出,当σ<0时,|z|<1;当σ>0时,|z|>1。也就是说,S平面的左半平面映射到Z平面的单位圆内,S平面的右半平面映射到Z平面的单位圆外,

4

数字信号处理课程设计-巴特沃斯hamming

S平面的虚轴映射到Z平面的单位圆上。因此,稳定的模拟滤波器经双线性变换后所得的数字滤波器也一定是稳定的。

双线性变换法优缺点

双线性变换法与脉冲响应不变法相比,其主要的优点是避免了频率响应的混叠现象。这是因为S平面与Z平面是单值的一一对应关系。S平面整个jΩ轴单值地对应于Z平面单位圆一周,即频率轴是单值变换关系。这个关系如式(2-4)所示,重写如下:

上式表明,S平面上Ω与Z平面的ω成非线性的正切关系,如图2-2所示。 由图2-2看出,在零频率附近,模拟角频率Ω与数字频率ω之间的变换关系接近于线性关系;但当Ω进一步增加时,ω增长得越来越慢,最后当Ω→∞时,ω终止在折叠频率ω=π处,因而双线性变换就不会出现由于高频部分超过折叠频率而混淆到低频部分去的现象,从而消除了频率混叠现象。

图2-2双线性变换法的频率变换关系

但是双线性变换的这个特点是靠频率的严重非线性关系而得到的,如式(2-4)及图2-2所示。由于这种频率之间的非线性变换关系,就产生了新的问题。首先,一个线性相位的模拟滤波器经双线性变换后得到非线性相位的数字滤波器,不再保持原有的线性相位了;其次,这种非线性关系要求模拟滤波器的幅频响应必须是分段常数型的,即某一频率段的幅频响应近似等于某一常数(这正是一般典型的低通、高通、带通、带阻型滤波器的响应特性),不然变换所产生

5

数字信号处理课程设计-巴特沃斯hamming

图4-1

卷积程序如下:

x1=[2 0 0 7 5 7 1 7 0 1 0 6];

x2=[1, 2.43, 6.17,12.93,22.17,32.25,40.88, 45.87, 45.87, 40.88, 32.25, 22.17, 12.93, 6.17, 2.43,1.0000]

y=conv(x1,x2)

stem(y);xlabel('n');ylabel('y[n]'); 卷积图形如下:

图4-2

圆周卷积程序如下:

m1=[2 0 0 7 5 7 1 7 0 2 2 9];

m2=[1 2.43 6.17 12.93 22.17 32.25 40.88 45.87 45.87 40.88 32.25 22.17

11

数字信号处理课程设计-巴特沃斯hamming

12.93 6.17 2.43 1];

subplot(711);stem(m1);ylabel('x1(n)'); subplot(712);stem(m2);ylabel('x2(n)');

m2=fliplr(m2);subplot(713);stem(m2);ylabel('shift'); k=length(m1);j=length(m2);N=max(j,k);M=N;

x2=[zeros(1,M-j-1) m2 0];x1=[m1 zeros(1,M-k)];y=ones(1,N); while N>0

x2=[x2(M) x2(1:M-1)]; y(N)=sum(x1.*x2); if N>M-3

subplot(7,1,4+M-N);stem(x2);ylabel('shift'); end N=N-1; end

subplot(717);stem(y);ylabel('y'); 图形如下所示:

图4-3

采样程序如下所示: t=0:0.0005:0.3;

xa=8*exp(-8*sqrt(2)*pi*t).*sin(8*sqrt(2)*pi*t); subplot(611);plot(t,xa);ylabel('origin xa');

12

数字信号处理课程设计-巴特沃斯hamming

t=0.015; n=0:t:0.3; pt=ones(0.3/t+1);

subplot(612);stem(n,pt);ylabel('sample signal'); xaa=8*exp(-8*sqrt(2)*pi*n).*sin(8*sqrt(2)*pi*n); subplot(613);stem(n,xaa);ylabel('sampled signal'); y1=fft(xa,4096);

subplot(614);plot(abs(y1));ylabel('sample signal'); y2=fft(xaa,4096);

subplot(615);plot(abs(y2));ylabel('sample signal'); t=0.005; n=0:t:0.3;

xaa=8*exp(-8*sqrt(2)*pi*n).*sin(8*sqrt(2)*pi*n); y2=fft(xaa,4096);

subplot(616);plot(abs(y2));ylabel('sample signal'); 波形图如下图所示:

图4-4

卷积翻转采样求和程序如下所示:

m1=wavread('c:\\windows\\media\\chord.wav',10);m1=m1';m1=m1(1,:)

13

数字信号处理课程设计-巴特沃斯hamming

m2=[1 2.43 6.17 12.93 22.17 32.25 40.88 45.87 45.87 40.88 32.25 22.17 12.93 6.17 2.43 1];

subplot(711);stem(m1);ylabel('x1(n)'); subplot(712);stem(m2);ylabel('x2(n)'); y=conv(m1,m2);

subplot(713);stem(y);ylabel('y'); N=max(length(m1),length(m2)); X1=fft(m1,25);X2=fft(m2,25); subplot(714);stem(X1);ylabel('X1'); subplot(715);stem(X2);ylabel('X2'); Y1=X1.*X2;

subplot(716);stem(Y1);ylabel('Y1'); Y2=fft(y);

subplot(717);stem(Y2);ylabel('Y2'); 波形图如下所示:

图4-5

14

数字信号处理课程设计-巴特沃斯hamming

4.2设计题部分

1.hamming高通滤波器

调试程序见附录‘hamming窗高通滤波器程序’所示,运行程序波形图分析如下:

图4-6 图4-7

Windos系统中关机声音的调用采样波形以及语音信号的频谱图如图4-6所示;加入的噪声波形如图4-7所示;

图4-8 图4-9 加入噪声后的信号波形即被污染的信号波形如图4-8所示;高通滤波器波形如图4-9所示;

图4-10

滤波后的信号波形如图4-10所示;

15

数字信号处理课程设计-巴特沃斯hamming

title('噪声信号频谱'); x1=x+zs';

%sound(x1,FS,bits); y1=fft(x1,1000); figure(3);

subplot(211);plot(x1); title('加入噪声后的信号波形'); subplot(212);

plot(f(1:300),abs(y1(1:300))); title('加入噪声后的信号频谱'); %滤波

fp1=1000,fs1=500; fp2=1500,fs2=2000; ws1=2*pi*fs1/FS; wp1=2*pi*fp1/FS; wp2=2*pi*fp2/FS; ws2=2*pi*fs2/FS; Bt1=wp1-ws1;

N0=ceil(6.2*pi/Bt1); N=N0+mod(N0+1,2);

wc=[(wp1+ws1)/2/pi,(wp2+ws2)/2/pi]; hn=fir1(N-1,wc,hanning(N)); X=conv(hn,x); sound(X,FS,bits); X1=fft(X,1000); figure(4); freqz(hn,1,256); figure(5); subplot(211); plot(X);

26

数字信号处理课程设计-巴特沃斯hamming

title('滤波后的信号波形'); subplot(212);

plot(f(1:300),abs(X1(1:300))); title('滤波后的信号频谱')

3. hamming窗低通滤波器程序

%产生噪声信号并加到语音信号 t=0:length(x)-1;

zs0=0.05*cos(2*pi*10000*t/1024); zs=[zeros(0,20000),zs0]; figure(2); subplot(211) plot(zs)

title('噪声信号波形'); zs1=fft(zs,1200); %sound(zs,FS,bits); subplot(212)

plot(f(1:600),abs(zs1(1:600))); title('噪声信号频谱'); x1=x+zs';

%sound(x1,FS,bits); y1=fft(x1,1200); figure(3);

subplot(211);plot(x1); title('加入噪声后的信号波形'); subplot(212);

plot(f(1:600),abs(y1(1:600))); title('加入噪声后的信号频谱'); %滤波

27

数字信号处理课程设计-巴特沃斯hamming

fp=7500,fc=8500; wp=2*pi*fp/FS; ws=2*pi*fc/FS;

Bt=ws-wp; N0=ceil(6.2*pi/Bt); N=N0+mod(N0+1,2); wc=(wp+ws)/2/pi; hn=fir1(N-1,wc,hanning(N)); X=conv(hn,x); sound(X,FS,bits); X1=fft(X,1200); figure(4); freqz(hn,1,512); figure(5); subplot(211); plot(X);

title('滤波后的信号波形'); subplot(212);

plot(f(1:600),abs(X1(1:600))); title('滤波后的信号频谱')

4. hamming窗高通滤波器程序 %产生噪声信号并加到语音信号 t=0:length(x)-1;

zs0=0.08*cos(2*pi*400*t/30000); zs=[zeros(0,100),zs0]; figure(2); subplot(211); plot(zs)

title('噪声信号波形');

28

数字信号处理课程设计-巴特沃斯hamming

zs1=fft(zs,1200); %sound(zs,FS,bits); subplot(212)

plot(f(1:300),abs(zs1(1:300))); title('噪声信号频谱'); x1=x+zs';

%sound(x1,FS,bits); y1=fft(x1,600); figure(3);

subplot(211);plot(x1);

title('加入噪声后的信号波形'); subplot(212);

plot(f(1:300),abs(y1(1:300))); title('加入噪声后的信号频谱'); %滤波

fp=2000,fs=1500; wp=2*pi*fp/FS; ws=2*pi*fs/FS;

Bt=wp-ws; N0=ceil(6.2*pi/Bt); N=N0+mod(N0+1,2);

wc=(wp+ws)/2/pi;

hn=fir1(N-1,wc,'high',hanning(N)); X=conv(hn,x); X1=fft(X,512); sound(X,FS,bits); figure(4); freqz(hn,1,512); figure(5);

29

数字信号处理课程设计-巴特沃斯hamming

subplot(211); plot(X);

title('滤波后的信号波形'); subplot(212);

plot(f(1:300),abs(X1(1:300))); title('滤波后的信号频谱')

5. 巴特沃斯带通滤波器

%产生噪声信号并加到语音信号 t=0:length(x)-1;

zs0=0.02*cos(2*pi*100*t/30000)+0.02*cos(2*pi*4000*t/30000) zs=[zeros(0,100),zs0]; figure(2); subplot(211); plot(zs);

title('噪声信号波形'); zs1=fft(zs,1000); %sound(zs,FS,bits); subplot(212);

plot(f(1:300),abs(zs1(1:300))); title('噪声信号频谱'); x1=x+zs';

%sound(x1,FS,bits); y1=fft(x1,1000); figure(3);

subplot(211);plot(x1);

title('加入噪声后的信号波形'); subplot(212);

plot(f(1:300),abs(y1(1:300))); title('加入噪声后的信号频谱');

30

数字信号处理课程设计-巴特沃斯hamming

fsl=500;fpl=800;fpu=1500;fsu=2000;Fs=22050 rp=1;rs=10;

wp=2*pi*[fpl,fpu]/Fs; ws=2*pi*[fsl,fsu]/Fs; Fs=Fs/Fs;

wap=2*tan(wp/2);was=2*tan(ws/2); [N,wc]=buttord(wap,was,rp,rs,'s'); [B,A]=butter(N,wc,'s'); [Bz,Az]=bilinear(B,A,Fs); [h,w]=freqz(Bz,Az,512,Fs*22050); figure(4); plot(w,abs(h));

title('巴特沃斯高通滤波器');

xlabel('频率(HZ)');ylabel('耗损(dB)'); grid on;

yd=filter(Bz,Az,x1); figure(5);

subplot(2,1,1);plot(yd); title('滤波后的时域波形图'); ydd=fft(yd,1050); subplot(2,1,2);

plot(f(1:300),abs(ydd(1:300))); title('滤波后的频域波形图'); %sound(yd,FS,bits);

6. 巴特沃斯低通滤波器

%产生噪声信号并加到语音信号 t=0:length(x)-1;

zs0=0.08*cos(2*pi*100000*t/1024); zs=[zeros(0,30000),zs0];

31

数字信号处理课程设计-巴特沃斯hamming

figure(2); subplot(2,1,1) plot(zs)

title('噪声信号波形'); zs1=fft(zs,1200);

%sound(zs,FS,bits); %回放噪音 subplot(2,1,2)

plot(f(1:600),abs(zs1(1:600))); title('噪声信号频谱'); x1=x+zs';

%sound(x1,FS,bits); %回放加入噪声后的语音 y1=fft(x1,1200); figure(3);

subplot(2,1,1);plot(x1); title('加入噪声后的信号波形'); subplot(2,1,2);

plot(f(1:600),abs(y1(1:600))); title('加入噪声后的信号频谱'); %低通滤波

fp=3000;fs=4000;Fs=22050; rp=1;rs=10; wp=2*pi*fp/Fs; ws=2*pi*fs/Fs; Fs=Fs/Fs; wap=2*tan(wp/2); was=2*tan(ws/2);

[N,wc]=buttord(wap,was,rp,rs,'s'); [B,A]=butter(N,wc,'s'); [Bz,Az]=bilinear(B,A,Fs); figure(4);

32

数字信号处理课程设计-巴特沃斯hamming

[h,w]=freqz(Bz,Az,512,Fs*22050); plot(w,abs(h));

title('巴特沃斯低通滤波器');

xlabel('频率(HZ)');ylabel('耗损(dB)'); grid on;

yd=filter(Bz,Az,x1); figure(5);

subplot(2,1,1);plot(yd); title('滤波后的时域波形图'); ydd=fft(yd,1024);

subplot(2,1,2);plot(f(1:600),abs(ydd(1:600))); title('滤波后的频域波形图'); %sound(yd,FS,bits)

7. 巴特沃斯高通滤波器

%产生噪声信号并加到语音信号 t=0:length(x)-1;

zs0=0.08*cos(2*pi*200*t/30000); zs=[zeros(0,100),zs0]; figure(2); subplot(211); plot(zs)

title('噪声信号波形'); zs1=fft(zs,1200); %sound(zs,FS,bits); subplot(212)

plot(f(1:300),abs(zs1(1:300))); title('噪声信号频谱'); x1=x+zs';

%sound(x1,FS,bits);

33

数字信号处理课程设计-巴特沃斯hamming

y1=fft(x1,600); figure(3);

subplot(211);plot(x1);

title('加入噪声后的信号波形'); subplot(212);

plot(f(1:300),abs(y1(1:300))); title('加入噪声后的信号频谱'); %高通滤波器

fp=1200;fs=800;Fs=22050; rp=1;rs=10; wp=2*pi*fp/Fs; ws=2*pi*fs/Fs; Fs=Fs/Fs;

wap=2*tan(wp/2);was=2*tan(ws/2); [N,wc]=buttord(wap,was,rp,rs,'s'); [B,A]=butter(N,wc,'high','s'); [Bz,Az]=bilinear(B,A,Fs); figure(4);

[h,w]=freqz(Bz,Az,512,Fs*22050); plot(w,abs(h));

title('巴特沃斯高通滤波器');

xlabel('频率(HZ)');ylabel('耗损(dB)'); grid on;

yd=filter(Bz,Az,x1); figure(5);

subplot(2,1,1);plot(yd); title('滤波后的时域波形图'); ydd=fft(yd,800);

subplot(2,1,2);plot(f(1:600),abs(ydd(1:600))); title('滤波后的频域波形图');

34

数字信号处理课程设计-巴特沃斯hamming

%sound(yd,FS,bits)

35

本文来源:https://www.bwwdw.com/article/7lrt.html

Top