好文档 - 专业文书写作范文服务资料分享网站

林数字信号处理课程设计

天下 分享 时间: 加入收藏 我要投稿 点赞

z,fp2=3000 Hz,fc1=1000 Hz,fc2=3200 Hz,As=80dB,Ap=1dB。要求学生首先用窗函数法设计上面要求的三种滤波器,在MATLAB中,可以利用函数fir1设计FIR滤波器,然后在用双线性变换法设计上面要求的三种滤波器;之后再利用函数butter和cheby1设计上面要求的三种IIR滤波器。最后,利用MATLAB中的函数freqz画出各滤波器的频率响应。 4.用滤波器对信号进行滤波

比较FIR和IIR两种滤波器的性能,然后用性能好的各滤波器分别对采集的信号进行滤波,在MATLAB中,FIR滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波。 5.比较滤波前后语音信号的波形及频谱

要求在一个窗口同时画出滤波前后的波形及频谱。 6.回放语音信号

在MATLAB中,函数sound可以对声音进行回放。其调用格式: sound(x,fs,bits);可以感觉滤波前后的声音有变化。

三.设计原理

1. IIR滤波器双线性变换法设计原理:双线性变换法中S平面与z平面之间满足以下映射关系:

s平面的虚轴单值地映射于z平面的单位圆上,s平面的左半平面完全映射到z平面的单位圆内。双线性变换不存在混叠问题。双线性变换时一种非线性变换

,这种非线性引起的幅频特性畸变可通过预畸而得到校正。

双线性法设计IIR数字滤波器的步骤:(1)将数字滤波器的频率指标{ Wk=(2/T)*tan(

wk?k}由

),转换为模拟滤波器的频率指标{

?k}. (2) 根据通带临

界频率和阻带临界频率计算模拟低通原型滤波器的阶数N,并求得低通原型的传递函数H(s); (3) 用上面的双线性变换公式代入H(s),求出所设计的传递函数H(z).(4) 分析滤波器特性,检查其指标是否满足要求。 2. 窗函数法设计线性相位FIR滤波器步骤

(1)确定数字滤波器的性能要求:临界频率{ωk},滤波器单位脉冲响应长度N; 根据性能要求,合理选择单位脉冲响应h(n)的奇偶对称性,从而确定理想频率响应Hd(ejω)的幅频特性和相频特性;

(2)求理想单位脉冲响应hd(n),在实际计算中,可对Hd(ejω)按M(M远大于N)点等距离采样,并对其求IDFT得hM(n),用hM(n)代替hd(n);

(3)选择适当的窗函数w(n),根据过渡带宽及阻带衰减要求,选择窗函数的类型并估计窗口长度N(或阶数M=N-1),窗函数类型可根据最小阻带衰减As独立选择,因为窗口长度N对最小阻带衰减As没有影响,在确定窗函数类型以后,可根据过渡带宽小于给定指标确定所拟用的窗函数的窗口长度N,设待求滤波器的过渡带宽为Δw,它与窗口长度N近似成反比,窗函数类型确定后,其计算公式也确定了,不过这些公式是近似的,得出的窗口长度还要在计算中逐步修正,原则是在保证阻带衰减满足要求的情况下,尽量选择较小的N,在N和窗函数类型确定后,即可调用MATLAB中的窗函数求出窗函数wd(n)。根据h(n)= hd(n)w(n)求所需设计的FIR滤波器单位脉冲响应; 求H(ejω),分析其幅频特性,若不满足要求,可适当改变窗函数形式或长度N,重复上述设计过程,以得到满意的结果。 窗函数的傅式变换W(ejω)的主瓣决定了H(ejω)过渡带宽。W(ejω)的旁瓣大小和多少决定了H(ejω)在通带和阻带范围内波动幅度.。

四.课程设计的步骤 1.语音信号的采集:

(1)在MATLAB软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。

采样频率即取样频率,指每秒钟取得声音样本的次数。它的采样频率越高,声音的质量也就越好,但人耳的分辨率很有限,所以太高的频率就分辨不出好坏来。对于高于48KHz的采样频率人耳已无法辨别出来了。由采样定理知,采样频率要大于信号最高频率的两倍,否则会产生混叠,人的声音频率在300Hz-3400Hz所以取采样频率为8000Hz。这次实验是利用MATLAB来录制的.采样位数可以理解为声卡处理声音的解析度。这个数值越大,解析度就越高,录制和回放的声音就越真实。电脑中的声音文件是用数字0和1来表示的。所以在电脑上录音的本质就是把模拟声音信号转换成数字信号。反之,在播放时则是把数字信号还原成模拟声音信号输出。实验中wavread函数返回的Nbits为16位,声音效果还是很好的。

%我的录音程序

fs=8000;%采样频率

fprintf('开始录音');

y=wavrecord(2*fs,fs,'double')%录制声音2秒 fprintf('录音结束');

wavplay(y,fs);%播放录音

wavwrite(y,fs,'d:/shengyin');%声音的存储 wavread('d:/shengyin');%读取声音 figure(1);

plot(abs(y)); %画出声音采样后的时域波形 grid on;%添加网格

title('语音信号的时域波形');%给图形加注标签 z=fft(y,8192);%对信号做8192点FFT变换 f=fs*(0:4095)/8192;%采样点数 figure(2);

plot(f,abs(z(1:4096)));%绘制原始语音信号的幅频响应图 axis([0 4000 0 20]);

title('FFT后声音的频谱特性');%给图形加注标签 grid on;%添加网格

%录制刚开始时,常会出现实际发出声音落后录制动作半拍的现象,现在排除对这些无效点 fs=8000;

size=wavread('d:/shengyin','size')%声音的数据长度 z=wavread('d:/shengyin',[2000 16000]);%读取声音 wavplay(z,fs);%播放声音

wavwrite(z,fs,'d:/shengyin1');%声音的存储 wavread('d:/shengyin1');%读取声音 figure(3);

plot(abs(z)); %画出声音采样后的时域波形 grid on;%添加网格

title('排除无效点后语音信号的时域波形');%给图形加注标签说明 z=fft(y,8192); %对信号做fs点FFT变换 figure(4);

f=fs*(0:4095)/8192;%采样点数

plot(f,abs(z(1:4096))); %绘制语音信号的幅频响应图 axis([0 4000 0 20]);

title('排除无效点经FFT后声音的频谱特性');%给图形加注标签说明 grid on;%添加网格

语音信号的时域波形0.060.050.040.030.020.0100200040006000800010000120001400016000

排除无效点后语音信号的时域波形0.060.050.040.030.020.010050001000015000

FFT后声音的频谱特性2024161412108642005001000150020002500300035004000

排除无效点经FFT后声音的频谱特性2024161412108642005001000150020002500300035004000

2. 取8000个和16000个数据进行频谱分析,得到幅度和相位谱,比较二者异同并分析原因。程序如下

x1=wavread('D:\\shengyin',8000); %读取语音信号的数据,赋给变量x1 sound(x1,8000); %播放语音信号

x2=wavread('D:\\shengyin',16000); %读取语音信号的数据,赋给变量x2 sound(x1,8000); %播放语音信号 y1=fft(x1,8192); %对信号做8192点FFT变换 y2=fft(x2,8192);

f=fs*(0:4095)/8192; figure(1)

subplot(1,2,1);

plot(x1) title('取8000数据的语音信号'); xlabel('时间'); ylabel('幅值'); subplot(1,2,2);

plot(x2) title('取16000数据的语音信号'); xlabel('时间'); ylabel('幅值'); figure(2)

subplot(1,2,1);

plot(angle(y1)); title('相位图') subplot(1,2,2); plot(angle(y2)); title('相位图') figure(3)

subplot(1,2,1)

plot(f,abs(y1(1:4096))); axis([0 4000 0 20]); title('语音信号频谱') xlabel('频率'); ylabel('幅值'); subplot(1,2,2)

plot(f,abs(y2(1:4096))); axis([0 4000 0 20]); title('语音信号频谱')

xlabel('频率'); ylabel('幅值');

取8000数据的语音信号0.050.0450.040.0350.030.050.0450.040.0350.03取16000数据的语音信号幅值0.0250.020.0150.010.005005000时间10000幅值0.0250.020.0150.010.005005000时间10000

林数字信号处理课程设计

z,fp2=3000Hz,fc1=1000Hz,fc2=3200Hz,As=80dB,Ap=1dB。要求学生首先用窗函数法设计上面要求的三种滤波器,在MATLAB中,可以利用函数fir1设计FIR滤波器,然后在用双线性变换法设计上面要求的三种滤波器;之后再利用函数butter和cheby1设计上面要求的三种IIR滤波器。最后,利用MATLAB中的函数freqz画出各滤波器的频率响应。
推荐度:
点击下载文档文档为doc格式
2snzv3rv111lh1d7s0l19lpyv23wp8008lz
领取福利

微信扫码领取福利

微信扫码分享