DSP实验报告1.docx
- 文档编号:5382536
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:19
- 大小:157.42KB
DSP实验报告1.docx
《DSP实验报告1.docx》由会员分享,可在线阅读,更多相关《DSP实验报告1.docx(19页珍藏版)》请在冰豆网上搜索。
DSP实验报告1
基于Matlab的数字滤波器设计及其对语音信号的应用
一、课程设计的目的
1.掌握数字信号处理的基本概念、基本理论和基本方法;
2.掌握MATLAB设计FIR和IIR数字滤波器的方法;
3.掌握在Windows环境下语音信号采集以及时域、频域分析;
4.学会MATLAB的使用,掌握MATLAB的程序设计方法;
5.学会用MATLAB对信号进行分析和处理。
二、课程设计内容
1.录制一段自己的语音信号,对录制的信号进行采样;
2.画出采样后语音信号的时域波形和频谱图;
3.给定滤波器的性能指标,采matlab设计数字滤波器,并画出滤波器的频
率响应;
4.用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;
5.回放语音信号。
三、滤波器设计方法综述
数字滤波器由数字乘法器、加法器和延时单元组成的一种算法或装置。
数字滤波器的功能是对输入离散信号的数字代码进行运算处理,以达到改变信号频谱的目的。
数字滤波器有低通、高通、带通、带阻和全通等类型。
它可以是时不变的或时变的、因果的或非因果的、线性的或非线性的。
应用最广的是线性、时不变数字滤波器,以及FIR滤波器。
IIR滤波器又名“无限脉冲响应数字滤波器”,或“递归滤波器”。
递归滤波器,也就是IIR数字滤波器,顾名思义,具有反馈,一般认为具有无限的脉冲响应。
IIR滤波器的设计方法有以下三种:
(1)直接设计数字滤波器。
直接设计方法的思想是基于给定的滤波器参数直接在离散域上寻找合适的数字滤波器,他不限于常规的滤波器类型,如低通、高通、带通和带阻等。
(2)脉冲相应不变法。
脉冲响应不变法的基本思路是直接设计一个数字滤波器并让它的时间特性逼近一个模拟滤波器。
为了达到时间特性的最佳逼近,它把模拟滤波器冲激响应的均匀取值,作为数字滤波器的单位脉冲响应,即
。
然后将h(n)通过z变换即求得H(z)。
脉冲响应不变法实即时域取样法,整个过程是先根据给定的指标设计一个模拟滤波器,进而按下列变换的顺序,最后求得数字滤波器的系统函数H(z),即
。
(3)双线性变换。
为了克服脉冲响应不变法所存在的缺点,提出采用双线性变换法。
该法的基本思想是首先按给定的指标设计一个模拟滤波器,其次将这个模拟滤波器的系统函数,通过适当的数学变换方法把无限宽的频带,变换成频带受限的系统函数。
最后再进行常规z变换,求得数字滤波器的系统函数H(z)。
这样由于在数字化以前已经对频带进行了压缩,所以数字化以后的频响可以做到无混叠效应。
(4)使用Matlab6下的FilterDesignedTool3。
利用Matlab设计数字滤波器的设计思路:
首先将数字高通滤波器的技术指标转化为模拟滤波器的技术指标,再采用Buttetworth逼近的方法求得其系统函数H(S),再利用冲激响应不变法将模拟滤波器的系统函数H(s)变为相应的数字滤波器的系统函数H(Z),然后用MATALB进行仿真,然后确定数字滤波器的结构。
四、设计任务及步骤
1.语音信号的采集
可以通过开始—程序—附件—娱乐—录音机,录制一段自己的话音。
或利用老师给的语音。
在Matlab软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数,其函数为wavrecord(2*fs,fs)。
利用函数wavread对语音信号进行采样的程序如下:
[y,fs,bits]=wavread('C:
\feng.wav');
sound(y);
wavrecord(2*fs,fs);
freqz(y);
采集后的feng.wav语音信号的时域波形如下图1-1所示。
图1-1语音信号的时域波形
2.语音信号的频谱分析
要求画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性。
利用MATLAB的fft函数得到信号频谱特性的程序如下:
[y,fs,bits]=wavread('c:
\feng.wav');//读入语音
Y=fft(y);//快速fft变换
mag=abs(Y);//绝对值化
phase=angle(Y);//相位
phase=phase*180/pi;
t=(0:
length(y)-1)/fs;//时域长度
figure
(1)
subplot(311);
plot(t,y);//波形图
title('波形图');
xlabel('时间(s)');
ylabel('幅度');
f=(1:
length(Y))*fs/length(Y);//频域长度
subplot(312);
plot(f,mag);//频域波形幅度
title('幅度谱');
xlabel('频率(Hz)');
ylabel('频谱幅度');
subplot(313);
plot(f,phase);//画出相位谱
title('相位谱');
xlabel('频率(Hz)');
ylabel('频谱相位');
其结果如下图1-2所示,在图1-2中,从上到下次依次为原语音信号时域图、幅度谱和相位谱图。
图1-2语音信号的幅度谱和相谱图
3.设计数字滤波器,画出其频率响应曲线
各滤波器的性能指标:
(1)低通滤波器性能指标 fp=1000Hz,fs=1200Hz,As=40dB,Ap=1dB。
(2)高通滤波器性能指标 fs=4000Hz,fp=4300Hz,As=40dB,Ap=1dB
(3)带通滤波器性能指标 fp1=1200Hz,fp2=3000Hz,fs1=1000Hz,fs2=3200Hz,As=40dB,Ap=1dB。
要求:
(1)频率变换法设计IIR滤波器:
可以利用函数butter、cheby1、cheby2和ellip等设计。
(2)函数freqz画出各滤波器的频率响应。
频率变换法设计IIR滤波器butter函数低通滤波器,图1-3显示的是buffer低通滤波器的特性,图1-4显示的是原始信号的时域波形,图1-5显示的是IIR滤波后的波形图,图1-6显示的是FIR滤波后的波形图。
程序如下:
[y,fs,bit]=wavread('c:
\feng.wav');
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);
[h,w]=freqz(b,a);
subplot(221);plot(w*fs/(2*pi),abs(h));
xlabel('图1-3butter低通滤波');
y1=filter(b,a,y);
y2=fftfilt(b,y);
subplot(222);plot(y);xlabel('图1-4原始语音信号');
subplot(223);plot(y1);xlabel('图1-5IIR滤波后语音信号');
subplot(224);plot(y2);xlabel('图1-6FIR滤波后语音信号');
sound(y1,fs,bit);
频率变换法设计IIR滤波器butter函数高通滤波器,图1-7显示的是buffer高通滤波器的特性,图1-8显示的是原始信号的时域波形,图1-9显示的是IIR滤波后的波形图,图1-10显示的是FIR滤波后的波形图。
程序如下:
[y,fs,bit]=wavread('c:
\feng.wav');
fp=4300;
fr=4000;
ap=1;
as=40;
[n,fn]=buttord(fp/(fs/2),fr/(fs/2),ap,as,'z');
[b,a]=butter(n,fn,'high');
[h,w]=freqz(b,a);
subplot(221);plot(w*fs/(2*pi),abs(h));
xlabel('图1-7butter高通滤波');
y1=filter(b,a,y);
y2=fftfilt(b,y);
subplot(222);plot(y);xlabel('图1-8原始语音信号');
subplot(223);plot(y1);xlabel('图1-9IIR滤波后语音信号');
subplot(224);plot(y2);xlabel('图1-10FIR滤波后语音信号');
频率变换法设计IIR滤波器butter函数带通滤波器,图1-11显示的是buffer带通滤波器的特性,图1-12显示的是原始信号的时域波形,图1-13显示的是IIR滤波后的波形图,图1-14显示的是FIR滤波后的波形图。
程序如下:
[y,fs,bit]=wavread('c:
\feng.wav');
fp1=1200;
fr1=1000;
fp2=3000;
fr2=3200;
ap=1;
as=40;
fp=[fp1,fp2];
fr=[fr1,fr2];
[n,fn]=buttord(fp/(fs/2),fr/(fs/2),ap,as,'z');
[b,a]=butter(n,fn);
[h,w]=freqz(b,a);
subplot(221);plot(w*fs/(2*pi),abs(h));
xlabel('图1-11butter带通滤波');
y1=filter(b,a,y);
y2=fftfilt(b,y);
subplot(222);plot(y);xlabel('图1-12原始语音信号');
subplot(223);plot(y1);xlabel('图1-13IIR滤波后语音信号');
subplot(224);plot(y2);xlabel('图1-13FIR滤波后语音信号');
频率变换法设计IIR滤波器cheby1函数低通滤波器,图1-15显示的是cheby1低通滤波器的特性,图1-16显示的是原始信号的时域波形,图1-17显示的是IIR滤波后的波形图,图1-18显示的是FIR滤波后的波形图。
程序如下:
[y,fs,bit]=wavread('c:
\feng.wav');
fp=1000;
fr=1200;
ap=1;
as=40;
[n,fn]=cheb1ord(fp/(fs/2),fr/(fs/2),ap,as,'z');
[b,a]=cheby1(n,ap,fn);
subplot(221);plot(w*fs/(2*pi),abs(h));
xlabel('图1-15cheby1低通滤波');
y1=filter(b,a,y);
y2=fftfilt(b,y);
subplot(222);plot(y);xlabel('图1-16原始语音信号');
subplot(223);plot(y1);xlabel('图1-17IIR滤波后语音信号');
subplot(224);plot(y2);xlabel('图1-18FIR滤波后语音信号');
sound(y1,fs,bit);
频率变换法设计IIR滤波器cheby1函数高通滤波器,图1-19显示的是cheby1高通滤波器的特性,图1-20显示的是原始信号的时域波形,图1-21显示的是IIR滤波后的波形图,图1-22显示的是FIR滤波后的波形图。
程序如下:
[y,fs,bit]=wavread('c:
\feng.wav');
fp=4300;
fr=4000;
ap=1;
as=40;
[n,fn]=cheb1ord(fp/(fs/2),fr/(fs/2),ap,as,'z');
[b,a]=cheby1(n,ap,fn);
subplot(221);plot(w*fs/(2*pi),abs(h));
xlabel('图1-19cheby1高通滤波');
y1=filter(b,a,y);
y2=fftfilt(b,y);
subplot(222);plot(y);xlabel('图1-20原始语音信号');
subplot(223);plot(y1);xlabel('图1-21IIR滤波后语音信号');
subplot(224);plot(y2);xlabel('图1-22FIR滤波后语音信号');
频率变换法设计IIR滤波器cheby1函数高通滤波器,图1-19显示的是cheby1高通滤波器的特性,图1-20显示的是原始信号的时域波形,图1-21显示的是IIR滤波后的波形图,图1-22显示的是FIR滤波后的波形图。
程序如下:
频率变换法设计IIR滤波器cheby1函数带通滤波器,图1-23显示的是cheby1带通滤波器的特性,图1-24显示的是原始信号的时域波形,图1-25显示的是IIR滤波后的波形图,图1-26显示的是FIR滤波后的波形图。
程序如下:
[y,fs,bit]=wavread('c:
\feng.wav');
fp1=1200;
fr1=1000;
fp2=3000;
fr2=3200;
ap=1;
as=40;
fp=[fp1,fp2];
fr=[fr1,fr2];
[n,fn]=cheb1ord(fp/(fs/2),fr/(fs/2),ap,as,'z');
[b,a]=cheby1(n,ap,fn);
[h,w]=freqz(b,a);
subplot(221);plot(w*fs/(2*pi),abs(h));
xlabel('图1-23cheby1带通滤波');
y1=filter(b,a,y);
y2=fftfilt(b,y);
subplot(222);plot(y);xlabel('图1-24原始语音信号');
subplot(223);plot(y1);xlabel('图1-25IIR滤波后语音信号');
subplot(224);plot(y2);xlabel('图1-26FIR滤波后语音信号');
4.用滤波器对信号进行滤波,比较滤波前后语音信号的波形及频谱
要求用自己设计的各滤波器分别对采集的语音信号进行滤波,并在一个窗口同时画出滤波前后的波形及频谱。
IIR滤波器利用函数filter对信号进行滤波;FIR滤波器利用函数fftfilt对信号进行滤波。
程序如下:
x=filter(b,a,y);X=fft(x,4096);
subplot(211);plot(x);xlabel('图1-27滤波后信号波形');
subplot(212);plot(abs(X));xlabel('图1-28滤波后信号频谱');
五、总结
通过本次实践我掌握数字信号处理的基本概念、基本理论和基本方法;掌握了用MATLAB设计FIR和IIR数字滤波器的方法;掌握了在Windows环境下语音信号采集以及时域、频域分析;学会了MATLAB的使用,掌握了MATLAB的程序设计方法;学会了用MATLAB对信号进行分析和处理。
六、参考书目
[1]赵红怡.数字信号处理及其MATLAB实现.化学工业出版社.2002
[2]孙洪.数字信号处理实验指导书(MATLAB版).电子工业出版社.2005
[3]李正周.Matlab数字信号处理与应用.清华大学出版社.2008
DSP在数字识别中的应用
一、课程设计的目的
1.掌握数字信号处理的基本概念、基本理论和基本方法;
2.掌握图像处理的常用算法;
3.掌握数字信号处理在数字识别中的应用及数字识别使用的基本算法;
4.学会DSP的使用,掌握DSP的程序设计方法;
5.学会用DSP对数字图像进行分析和处理。
二、课程设计内容
把含有数字的图像。
如车牌、身份证等读取到DSP的SDRAM中,利用图像处理算法把数字从图像中定位出来;首先把图像二值化,二值化算法选择固定阈值、直方图或最大类间方差法,比较各个二值化算法的效果;对二值化的图像做边缘提取,选择Sobel或者Laplace边缘提取算法并比较效果;经过二值化和边缘提取后的图像,利用投影法定位数字在图像中的位置,并给出数字在图像中的外接矩形;利用CCS把处理结果显示出来。
1.课程设计基础
DSP编程基础、数字信号处理知识、图像处理知识。
2.内容与要求
(1)数字图像的采集,拍摄含有数字的图像,或利用老师给的图像,在DSPCCS软件平台下,编程把图像读取到DSP的SDRAM中。
本实验中,在CCS编译器中,利用C语言fread函数,把位图信息读到数组y中;
(2)二值化,要求完成固定阈值、直方图或最大类间方差法二值化算法,并比较算法处理结果,选择合适的二值化算法,得到二值化后的图像并显示。
固定阈值法,选择多个阈值比较处理,最终选择合适的阈值;最大类间方差法属于自动阈值法,通过程序设置不同的阈值,计算目标点和背景点的方差,取最大方差对应的阈值,既能完美分辨目标点和背景点。
(3)边缘提取,本实验边缘检测采用Sobel算子,当确定了字符的上下边沿和左右区域后,把字符周围全部设置成矩形的白方块,由于背景点是黑色的,所以通过边缘提取,就可以确定矩形白色方块的边缘。
提取后的边缘是也是矩形,正好包围里面的字符。
(4)数字定位,要求用自己设计的二值化结果对目标位置进行定位,给出数字的外接矩形和中心;利用投影法把二值化结果分别向水平和垂直方向投影,选择合适的阈值定位出数字位置,并输出目标位置;利用修改像素值的方法,把外接矩形绘制到图像中并通过CCS显示。
三.具体步骤
1.DSP5402实现方法
由于5402配置的内存较小,所以手工制作的车牌。
通过固定阈值二值化,然后通过垂直投影确定字符的上下边缘和水平投影确定每个字符的左右边缘,这样每个字符的位置就找到了,然后与原图合成,就得到了所要求的效果。
步骤如下:
(1)启动DSP5402、打开CSS软件,新建工程,导入CMD配置文件,新建C语言文件。
(2)把图片放在C盘根目录下,原图如图2-1,利用fread函数先去掉位图头信息然后读入图像数据到数组y中,代码如下:
fi=fopen("E:
\\feng.bmp","rb");
fread((char*)id,sizeof(char),54,fi);
for(i=0;i<16;i++)
{
fread((char*)id,sizeof(char),64,fi);
}
for(i=0;i { fread((char*)id,sizeof(char),128,fi); for(j=0;j { y[i][j]=id[j]; } } fclose(fi); 在view菜单下选择graph观察读入的图像,如图2-2所示。 图2-1原图文件 图2-2读入到DSP中显示出来的图像 (3)二值化,固定阈值二值化,通过多次二值化选择合适的阈值,经过二值化的图像如图2-3。 二值化代码如下: //二值化 i=0; for(i=0;i { for(j=0;j { y[i][j]=255*((y[i][j])/200);//设定阈值200; } } 图2-3二值化后的图像 (4)水平投影,分别计算每行的白点个数,从中间开始遍历,找到字符的上下边缘;如图2-4,代码如下: //水平投影每行白点数相加 for(i=0;i { for(j=0;j { if(y[i][j]>=200) p[i]++; } } //从中间向上下边沿遍历,寻找上下边沿存入变量up,down中 m=IMAGE_HEIGTH/2; temp=p[m]; for(i=m+1;i { if(temp>p[i]) { temp=p[i]; down=i; } if(temp==0) {down=i; break; } } temp=p[m]; for(i=m-1;i>=0;i--) { if(temp>p[i]) { temp=p[i]; up=i; } if(temp==0) { up=i; break; } } (5)垂直投影,计算每列的白点数,寻找每个字符的左右边缘,确定边缘后,把每个字符上下边缘左右边缘以内设置成白色,如图2-5,代码如下; //垂直投影,每列白点数之和存入数组p[]中 for(i=0;i { for(j=0;j { if(y[j][i]==255) {p[i]++;} } } //车牌是七位符号组成的,分别寻找七位符号的左边坐标存入数组p1[]中,右边坐标存入p2[]中; for(i=0;i { if(p[i]>0) { if(flag==0) { p1[num]=i-1; flag=1; } } else { if(flag==1) { p2[num]=i; flag=0; num++; } } if((flag==1)&&(i==IMAGE_WIDTH-1)) { p1[num]=0; p2[num]=0; num++; break; } } //根据已得的每个字符的上下边沿坐标,左右边沿坐标画方框; for(i=0;i<7;i++) { for(k=up;k { y[k][p1[i]]=255; y[k][p2[i]]=255; } } for(i=0;i<7;i++) { for(j=p1[i];j { y[up][j]=255; y[down][j]=255; } } } 图2-4合成后的图像 四、总结 通过本次实验我掌握了数字信号处理的基本概念、基本理论和基本方法; 掌握了图像处理的常用算法;掌握了数字信号处理在数字识别中的应用及数字识别使用的基本算法;学会了DSP的使用,掌握DSP的程序设计方法; 学会了用DSP对数字图像进行分析和处理。 DSP课程设计报告 学号: 0710930202 班级: 电信072 姓名: 冯超 指导老师: 耿磊刘丽杰
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 实验 报告