青岛科技大学数字信号处理课程设计一.doc

上传人:b****9 文档编号:113158 上传时间:2022-10-03 格式:DOC 页数:20 大小:340KB
下载 相关 举报
青岛科技大学数字信号处理课程设计一.doc_第1页
第1页 / 共20页
青岛科技大学数字信号处理课程设计一.doc_第2页
第2页 / 共20页
青岛科技大学数字信号处理课程设计一.doc_第3页
第3页 / 共20页
青岛科技大学数字信号处理课程设计一.doc_第4页
第4页 / 共20页
青岛科技大学数字信号处理课程设计一.doc_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

青岛科技大学数字信号处理课程设计一.doc

《青岛科技大学数字信号处理课程设计一.doc》由会员分享,可在线阅读,更多相关《青岛科技大学数字信号处理课程设计一.doc(20页珍藏版)》请在冰豆网上搜索。

青岛科技大学数字信号处理课程设计一.doc

青岛科技大学

《数字信号处理》课程设计报告

数字信号分析及数字滤波器设计

题目__________________________________

______________________________________

张淑军

指导教师__________________________

学生姓名__________________________

学生学号__________________________

_______________________________院(部)_____________________专业__班

____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;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1