青岛科技大学数字信号处理课程设计一.doc
- 文档编号:113158
- 上传时间:2022-10-03
- 格式:DOC
- 页数:20
- 大小:340KB
青岛科技大学数字信号处理课程设计一.doc
《青岛科技大学数字信号处理课程设计一.doc》由会员分享,可在线阅读,更多相关《青岛科技大学数字信号处理课程设计一.doc(20页珍藏版)》请在冰豆网上搜索。
青岛科技大学
《数字信号处理》课程设计报告
数字信号分析及数字滤波器设计
题目__________________________________
______________________________________
张淑军
指导教师__________________________
学生姓名__________________________
学生学号__________________________
_______________________________院(部)_____________________专业__班
____2014__年_12__月__25_日
1.目的与要求
1.进一步巩固数字信号处理中的基本原理与方法,提高分析、解决实际问题的能力。
2.熟练掌握一门计算机语言,进行数字信号处理应用的开发设计,训练基本技能,如查阅设计资料和手册、程序的设计、调试等。
3选择的题目为
(一)《数字信号分析及数字滤波器设计》
1.用以下方式产生三个不同频段的信号:
(1)自己录制一段正常的语音文件;
(2)录制一段环境噪声文件;(3)利用MATLAB产生一个不同于以上频段的信号。
2.对上述三个信号,进行频谱分析,画出三路信号的时域波形和频谱图,对进行对比分析。
3.根据三路信号的频谱特点得到性能指标,由性能指标设计三个滤波器,并画出各滤波器的频域响应。
4.将三路信号叠加为一路信号。
5.用自己设计的滤波器对合成的信号进行滤波,分析得到信号的频谱,并画出滤波后信号的时域波形和频谱。
2.主要技术和原理
2.1语音的输入、处理以及信号的叠加
⑴Matlab中语音信号的输入为
[x,fs,bits]=wavread('C:
\Users\lenovo\Desktop\原始语音.wav',[5000060000]);其中wavread函数读取Microsoft的wav格式音频文件,x为自己随意定义的一个输出函数,fs是采样频率bits表示每个样点的位数,[5000060000]表示读取从50000到60000个点到x中。
X_voice=x(:
1)因为音频信号都有两个声道,所以提取出来一个声道进行分析
Plot(x)为画出当前的波形,freqz(x)是求离散系统频响特性的函数。
随机产生的信号
(2)信号的叠加
本次实验需要将正常语音信号与噪音信号还有matlab产生的一个信号进行叠加,生成一个新的信号,代码如下
f1=22000;
f2=25000;
fs=50000;
t=1/fs;
length_x=length(x);input_x=zeros(1,length_x);
fori=1:
1:
length_x
input_x(i)=sin(2*pi*f1*i*t)+sin(2*pi*f2*i*t);
input_x=input_x';
end
正常语音信号的代码:
[x,fs,bits]=wavread('C:
\Users\lenovo\Desktop\原始语音.wav',[5000060000]);
X_voice=x(:
1);
input_x=X_voice;
噪声语音的代码:
[x1,fs1,bits1]=wavread('C:
\Users\lenovo\Desktop\ÔëÒô1.wav',[5000060000]);
X3_voice=x1(:
1);
input_x1=X3_voice;
但是信号叠加有一个非常重要的条件就是点数必须相同,不仅点数相同而且点数矩阵得是同一类型,在原始语音和噪声语音的点数10001个,但他们产生的是10001行1列矩阵,而matlab产生的正弦信号却是1行10001列矩阵,结果也不能叠加,这就需要将1行10001列矩阵变成10001行1列矩阵,input_x=input_x';反转语句就是讲input_x的行和列互换。
叠加语句:
fori=1:
1:
length_x
y1=X_voice+X3_voice+input_x;
end
2.2FIR滤波器设计原理
⑴时间窗口设计法是从单位脉冲响应序列着手,使h(n)逼近理想的单位脉冲响应序列hd(n)。
我们知道hd(n)可以从理想频响通过付氏反变换获得
但一般来说,理想频响是分段恒定,在边界频率处有突变点,所以,这样得到的理想单位脉冲响应hd(n)往往都是无限长序列,而且是非因果的。
但FIR的h(n)是有限长的,问题是怎样用一个有限长的序列去近似无限长的。
最简单的办法是直接截取一段hd(n)代替h(n)。
这种截取可以形象地想象为h(n)是通过一个“窗口”所看到的一段hd(n),因此,h(n)也可表达为h(n)和一个“窗函数”的乘积,即
h(n)=w(n)hd(n)
在这里窗口函数就是矩形脉冲函数RN(n),当然以后我们还可看到,为了改善设计滤波器的特性,窗函数还可以有其它的形式,相当于在矩形窗内对hd(n)作一定的加权处理。
(2)本次实验只采用了矩形窗设计方法,由于hd(n)是无限长的,故要用一个有限长的“窗函数”序列w(n)将hd(n)加以截断,窗的点数是N点。
截断后的序列为hd(n)
h(n)=w(n)hd(n),0<=n<=N-1
窗的点数N及窗的形状是两个极其重要的参数。
加窗后实际的频率响应
=DTFT[h(n)]=DTFT[]==
(3)FIR带通、高通、带阻、多通带多阻带滤波器的设计
(1)N长的FIR全通滤波器h(n)的函数表达当,则低通滤波器变为全通滤波器:
(2)N长的FIR高通滤波器h(n)的函数表达式
由高通的频谱结构可知,
高通滤波器的频谱=全通滤波器的频谱-低通滤波器的频谱。
(3)N长的FIR带通滤波器h(n)的函数表达式
带通滤波器的频谱=低通滤波器的频谱-低通滤波器的频谱。
(3)N长的FIR带通滤波器h(n)的函数表达式
带阻滤波器的频谱=全通滤波器的频谱-带通滤波器的频谱。
(4)N长的FIR带阻滤波器h(n)的函数表达式
带阻滤波器的频谱=全通滤波器的频谱-带通滤波器的频谱
(5)N长的FIR多通带多带阻滤波器h(n)的函数表达式
多通带多阻带滤波器的频谱=全通滤波器的频谱-带通滤波器的频谱-带通滤波器的频谱。
3.总体方案设计
3.1开发环境和工具
Pcwindow8.1matlab2012a
3.2具体框架
Matlab产生一个信号
噪声语音的录入
原始信号的录入
绘制时域频域波形
绘制时域频域波形
绘制时域频域波形
三路信号叠加成一路信号
绘制时域频域波形
设计多通多阻滤波器
设计高通滤波器
设计低通滤波器
与y1相卷积进行滤波
与y1相卷积进行滤波
与y1相卷积进行滤波
语音恢复成wav格式
语音恢复成wav格式
语音恢复成wav格式
3.3设计过程
(1)信号的获取采集(原始语音,噪声,matlab产生的信号)
①录取一段语音信号,fs=44100赫兹,共抽样10001个点②录取一段噪声语音,本次噪声语音就是用电脑自己录的杂音当做噪声,且fs=44100,也是抽取了10001个点③用matlab产生了一个正弦信号抽样频率为50000,f1和f2分别为22000和25000赫兹。
(2)对做好的信号要进行处理,用wavread函数将语音信号读进来,取他们的一列,对于正弦信号要进行转置input_x=input_x';以便于后面对信号的叠加做准备。
(3)绘制语音信号的时域波形的频域波形
(4)根据(3)设计出来的频谱特性进行分析,根据分析的结果设计滤波器,在画出各个滤波器的频谱以及时域波形。
(5)将做好的三路信号叠加成一路信号,在对叠加好的信号画频谱。
(6)将设计好的滤波器分别与此信号卷积进行滤波,在画出滤波后的信号的频谱。
(7)最后将语音恢复,输出到指定文件夹下。
4.实验结果与分析
4.1这部分是实现对原始语音的处理具体代码如下:
[x,fs,bits]=wavread('C:
\Users\lenovo\Desktop\原始话音.wav',[5000060000]);%对原始话音读取到x中
X_voice=x(:
1);%提取声道1
input_x=X_voice;%将声道1赋给input_x
figure
(1);
plot(input_x);对input_x画时域波形
title('原始话音波形');
figure
(1);
freqz(input_x);%对input_x画频谱波形
title('原始话音频谱');
X1_voice=x(:
2);%提取声道2
input_x=X1_voice;%将声道2赋给input_x
figure(3);
plot(input_x);
title('原始话音波形');
figure(4);
freqz(input_x);
title('原始话音频谱');
y=X_voice+X1_voice;&将两个信号叠加为原始语音信号
figure(5);
plot(y);
title('原始话音波形');
figure(6);
freqz(y);
title('原始话音频谱');
主要用到的函数wavread是对语音信号的读取,但只能是wav格式,plot(input_x);是画图函数,将input_x画出来,freqz(input_x);是求input_x的频谱并将其画出。
实验结果图如下:
上图为声道1的波形和频谱,只是提取了10001个点进行分析,此频谱特点是图上在f=2800,11250,21400赫兹处出现了尖峰。
这里只对提取的一个声道分析,代表了此信号。
4.2实现对噪音信号的处理模块及其实现代码:
[x1,fs1,bits1]=wavread('C:
\Users\lenovo\Desktop\ÔëÒô1.wav',[5000060000]);
X3_voice=x1(:
1);
input_x1=X3_voice;
figure(9);
plot(input_x1);
title('原始噪音波形');
figure(10);
freqz(input_x1);
title('原始噪音频谱图');
此模块与正常语音的的处理大同小异,只是在噪音里我只提取了一个声道,用到的函数与处理正常语音用到的函数一样。
实验结果图如下
以下两个图一个是噪音频谱,另一个是噪音波形,我也是对噪音提取了10001个点进行分析,从频谱上看,在f=6700赫兹以前信号的频率比较高,但不是很高,就设计一个高通滤波器将较高的信号滤除,使产生一个平稳的信号,此噪音不突出,一方面跟采样点数有关系,另一方面录制噪音的时候尖峰不够,但主要考察滤波器设计及其分析,不影响整体。
4.3实现matlab产生的正弦信号及其代码:
f1=22000;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 青岛 科技大学 数字信号 处理 课程设计