数字信号处理实验文档

  • 格式:docx
  • 大小:166.21 KB
  • 文档页数:12

实验任务:

1、给出音频信号的时域和频谱特性;

2、设计一个IIR数字滤波器,给出滤波器的时域和频谱特性,并利用滤波器对音频信号进行滤波,给出滤波结果(滤波后的时域和频谱特性);

3、设计一个FIR数字滤波器,给出滤波器的时域和频谱特性,并利用滤波器对音频信号进行滤波,给出滤波结果(滤波后的时域和频谱特性)。

实验原理:

采样频率、位数及采样定理

采样频率,也称为采样速度或者采样率,定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示。采样频率的倒数是采样周期或者叫作采样时间,它是采样之间的时间间隔。通俗的讲采样频率是指计算机每秒钟采集多少个声音样本,是描述声音文件的音质、音调,衡量声卡、声音文件的质量标准。采样频率越高,即采样的间隔时间越短,则在单位时间内计算机得到的声音样本数据就越多,对声音波形的表示也越精确。

采样位数可以理解为声卡处理声音的解析度。这个数值越大,解析度就越高,录制和回放的声音就越真实。我们首先要知道:电脑中的声音文件是用数字0和1来表示的。所以在电脑上录音的本质就是把模拟声音信号转换成数字信号。反之,在播放时则是把数字信号还原成模拟声音信号输出。

采样定理又称奈奎斯特定理,在进行模拟/数字信号的转换过程中,当采样频率fs不小于信号中最高频率fm的2倍时,采样之后的数字信号完整地保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的5~10倍。

IIR数字滤波器设计原理

利用双线性变换设计IIR滤波器(巴特沃斯数字低通滤波器的设计),首先要设计出满足指标要求的模拟滤波器的传递函数Ha(s),然后由Ha(s)通过双线性变换可得所要设计的IIR滤波器的系统函数H(z)。如果给定的指标为数字滤波器的指标,则首先要转换成模拟滤波器的技术指标,这里主要是边界频率Wp和Ws的转换,对ap和as指标不作变化。边界频率的转换关系为 ∩=2/T tan(w/2)。接着,按照模拟低通滤波器的技术指标根据相应设计公式求出滤波器的阶数N和3dB截止频率 ∩c ;根据阶数N查巴特沃斯归一化低通滤波器参数表,得到归一化传输函数Ha(p);最后,将p=s/ ∩c 代入Ha(p)去归一,得到实际的模拟滤波器传输函数Ha(s)。之后,通过双线性变换法转换公式s=2/T((1-1/z)/(1+1/z))得到所要设计的IIR滤波器的系统函数H(z)。

FIR数字滤波器设计原理

基于窗函数的FIR 数字滤波器的设计方法通常也称之为傅立叶级数法,是用一定宽度窗函数截取无限脉冲响应序列,获得有限长的脉冲响应序列,从而得到FIR 滤波器。它是在时域进行的,由理想滤波器的频率响应)(jdeH推导出其单位冲激响应hd(n),再设计一个FIR数字滤波器的单位冲激响应h(n)去逼近hd(n),表示)(nhd=21deeHjjd)(由此得到的离散滤波器的系统传递函数Hd(z) 为)(jdeH=10)(Nnjenh,该hd(n) 为无限长序列,因此Hd(z)是物理不可实现的。为了使系统变为物理可实现的,且使实际的FIR 滤波器频率响应尽可能逼近理想滤波器的频率响应,采用窗函数将无限脉冲响应hd(n)截取一段h(n)来近似表示hd(n),可得:h (n) = hd(n)w(n) ,从而有:式中N 表示窗口长度,这样H(z)就是物理可实现的系统。并且从线性相位FIR滤波器的充要条件可知,为了获得线性相位FIR

数字滤波器的冲激响应h(n) ,那么序列h(n) 应有τ = (N −1) / 2的延迟。由于窗函数的选择对结果起着重要的作用,针对不同的信号和不同的处理目的来确定窗函数的选择才能收到良好的效果。

实验结果:

原始语音信号采样后的时域、频域程序:

1、源程序如下:

时域波形:

z1=wavread(' C:\Documents and Settings\user\桌面\数字信号处理实验\chenwei.wav')

sound(z1,22050); %播放语音信号

figure(1)

plot(z1);

title('时域图');

xlabel('时间(n)');

ylabel('幅值(n)');

频域波形:

z2=wavread(' F:\Study\数字信号处理\实验\Qnylan.wav');

y1=z2(1:8192); y1=fft(y1);

n=0:8191;

sound(z1,22050); %播放语音信号

figure(2)

plot(n,y1);

title('频谱图');

xlabel('时间(n)');

ylabel('幅值(n)');

程序实验图:

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

源程序如下:

fs=22050;

[x2]=wavread(' C:\Documents and Settings\user\桌面\数字信号处理实验\chenwei.wav ');

Ts=1/fs;R1=10;

wp=2*pi*1000/fs; %通带截止频率

ws=2*pi*1200/fs; %阻带截止频率

Rp=1; %通带衰减

Rl=100; %阻带衰减

wp1=2/Ts*tan(wp/2); %将模拟指标转换成数字指标 ws1=2/Ts*tan(ws/2);

[N,Wn]=buttord(wp1,ws1,Rp,R1,'s'); %选择滤波器的最小阶数

[Z,P,K]=buttap(N); %创建butterworth模拟低通滤波器

[Bap,Aap]=zp2tf(Z,P,K);

[b,a]=lp2lp(Bap,Aap,Wn); %将模拟原型低通滤波器转换为低通滤波器

[bz,az]=bilinear(b,a,fs); %用双线性变换法实现模拟滤波器数字滤波器的转换

[H,W]=freqz(bz,az); %绘制频率响应曲线

figure(1)

plot(W*fs/(2*pi),abs(H))

grid

xlabel('频率/Hz')

ylabel('频率响应幅度')

title('IIR低通滤波器')

f1=filter(bz,az,x2);

figure(2)

subplot(2,1,1)

plot(x2) %画出滤波前的时域图

title('IIR低通滤波器滤波前的时域波形');

subplot(2,1,2)

plot(f1); %画出滤波后的时域图

title('IIR低通滤波器滤波后的时域波形');

sound(f1,44100); %播放滤波后的信号

F0=fft(f1,1024);

f=fs*(0:511)/1024;

figure(3) y2=fft(x2,1024);

subplot(2,1,1);

plot(f,abs(y2(1:512))); %画出滤波前的频谱图

title('IIR低通滤波器滤波前的频谱')

xlabel('频率/Hz');

ylabel('幅值');

subplot(2,1,2)

F1=plot(f,abs(F0(1:512))); %画出滤波后的频谱图

title('IIR低通滤波器滤波后的频谱')

xlabel('频率/Hz');

ylabel('幅值');

设计设计FIR数字滤波器:

源程序如下:

fs=10000;

x1=wavread(' C:\Documents and Settings\user\桌面\数字信号处理实验\chenwei.wav ');

wp=2*pi*1000/fs;

ws=2*pi*1200/fs;

Rp=1;

Rs=100;

wdelta=ws-wp;

N=ceil(8*pi/wdelta); %取整

wn=(wp+ws)/2;

[b,a]=fir1(N,wn/pi,hamming(N+1)); %选择窗函数,并归一化截止频率

figure(1)

freqz(b,a,512);

title('FIR低通滤波器');

f2=filter(b,a,x1);

figure(2)

subplot(2,1,1)

plot(x1)

title('FIR低通滤波器滤波前的时域波形');

subplot(2,1,2)

plot(f2);

title('FIR低通滤波器滤波后的时域波形');

sound(f2,44100); %播放滤波后的语音信号

F0=fft(f2,1024);

f=fs*(0:511)/1024;

figure(3) y2=fft(x1,1024);

subplot(2,1,1);

plot(f,abs(y2(1:512)));

title('FIR低通滤波器滤波前的频谱')

xlabel('频率/Hz');

ylabel('幅值');

subplot(2,1,2)

F2=plot(f,abs(F0(1:512)));

title('FIR低通滤波器滤波后的频谱')

xlabel('频率/Hz');

ylabel('幅值');

实验结果图: