没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
第二篇:
题目 2:基于 Matlab 的数字滤波器设计及其对语音信号的应用
一. 课程设计的目的:
1.掌握数字信号处理的基本概念、基本理论和基本方法;
2.掌握 MATLAB 设计 FIR 和 IIR 数字滤波器的方法;
3.掌握在 Windows 环境下语音信号采集以及时域、频域分析;
4.学会 MATLAB 的使用,掌握 MATLAB 的程序设计方法;
5.学会用 MATLAB 对信号进行分析和处理。
二.?????????? 课程设计内容:
1.录制一段自己的语音信号,对录制的信号进行采样;
2.画出采样后语音信号的时域波形和频谱图;
3.给定滤波器的性能指标,采 matlab 设计数字滤波器,并画出滤波器的频率响应;
4.用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的
信号进行对比,分析信号的变化;
5.回放语音信号。
三..滤波器设计方法综述:
(1)直接设计数字滤波器
(2)脉冲相应不变法
(3)双线性变换
(4)使用 matlab6 下的 Filter Designed Tool3.利用 Matlab 设计数字滤波器的方法:
设计思路:首先将数字高通滤波器的技术指标转化为模拟滤波器的技术指标,再采用 Buttetworth 逼
近的方法求得其系统函数 H(S),再利用冲激响应不变法将模拟滤波器的系统函数 H(s)变为相应的数字滤
波器的系统函数 H(Z),然后用 MATALB 进行仿真,然后确定数字滤波器的结构。
四.设计任务及步骤:
1.语音信号的采集
方法一:通过开始—程序—附件—娱乐—录音机,录制一段自己的话音。
方法二:或利用老师给的语音,在 Matlab 软件平台下,利用函数 wavread 对语音信号进行采样,记住
采样频率和采样点数。函数:wavrecord(2*fs,fs)
程序如下:
[y,fs,bite]=wavread('1.wav');
sound(y);
wavrecord(2*fs,fs);
fft(y);
Y=fft(y);
fp=1000;
fr=1200;as=40;ap=1;
[N, Wn] = BUTTORD(2*fp/fs, 2*fr/fs, ap, as);
[B,A] = BUTTER(N,Wn);
2.语音信号的频谱分析
要求画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性。fft
程序如下:
[y,fs,bite]=wavread('1.wav');
sound(y);
Y=fft(y);
mag=abs(Y);
phase=angle(Y);
phase=phase*180/pi;
dB=20*log10(abs(Y)+eps);
t=(0:length(y)-1)/fs;
figure(1)
subplot(221);plot(t,y);title('波形图');xlabel('时间(s)');ylabel('幅度');
f=(1:length(Y))*fs/length(Y);
subplot(222);plot(f,mag);title('幅度谱');xlabel('频率(Hz)');ylabel('频谱幅度');
subplot(223);plot(f,phase);title('相位谱');xlabel('频率(Hz)');ylabel('频谱相位');
subplot(224);plot(f,dB);title('对数幅度谱');xlabel('频率(Hz)');ylabel('频谱幅度(dB)');
x1=wavread('f:\s1.wav'); %读取语音信号的数据,赋给变量 x1
3.设计数字滤波器,画出其频率响应曲线
各滤波器的性能指标:
(1)低通滤波器性能指标 fp=1000Hz, fs=1200Hz, As=40dB, Ap=1dB。
(2)高通滤波器性能指标 fs=4000Hz, fp=4300Hz, As=40dB, Ap=1dB
(3)带通滤波器性能指标 fp1=1200 Hz, fp2=3 000 Hz, fs1=1000 Hz, fs2=3200 Hz, As=40dB,
Ap=1dB。
要求:
(1)频率变换法设计 IIR 滤波器: 可以利用函数 butter、cheby1、cheby2 和 ellip 等设计。
(2)(选做)设计 IIR 滤波器:用双线性变换法设计上面要求的 3 种滤波器。bilinear
(3)(选做)设计 FIR 滤波器:用窗函数法设计上面要求的 3 种滤波器。可以利用函数 fir1 设计 FIR 滤
波器。
(4)函数 freqz 画出各滤波器的频率响应。
低通滤波器:
1(频率变换法设计 IIR 滤波器)butter 函数
[y,fs,bit]=wavread('1');
fp=1000;
fr=1200;
ap=1;
as=40;
[n,fn]= buttord(fp/(fs/2),fr/(fs/2),ap,as,'z');
[b,a]=butter(n,fn);
freqz(b,a);
[h,w]=freqz(b,a);
subplot(221);plot(w*fs/(2*pi),abs(h));title('butter 低通滤波');
y1=filter(b,a,y);
y2=fftfilt(b,y);
subplot(222);plot(y);title('原始语音信号');
subplot(223);plot(y1);title('IIR 滤波后语音信号');
剩余13页未读,继续阅读
资源评论
CodeJie
- 粉丝: 11
- 资源: 16
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功