dsp课程设计报告.docx
- 文档编号:6995502
- 上传时间:2023-01-15
- 格式:DOCX
- 页数:21
- 大小:146.79KB
dsp课程设计报告.docx
《dsp课程设计报告.docx》由会员分享,可在线阅读,更多相关《dsp课程设计报告.docx(21页珍藏版)》请在冰豆网上搜索。
dsp课程设计报告
DSP课程设计报告
指导老师:
刘丽杰、耿磊
班级:
姓名:
学号:
题目一:
基于Matlab的数字滤波器设计及其对语音信号的应用
1.课程设计的目的:
1).掌握数字信号处理的基本概念、基本理论和基本方法;
2).掌握MATLAB设计FIR和IIR数字滤波器的方法;
3).掌握在Windows环境下语音信号采集以及时域、频域分析;
4).学会MATLAB的使用,掌握MATLAB的程序设计方法;
5).学会用MATLAB对信号进行分析和处理。
2.课程设计内容:
录制一段自己的语音信号,对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采matlab设计数字滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号。
3.课程设计基础:
MATLAB编程基础、数字信号处理知识、语音信号处理知识。
4.具体步骤与要求:
4.1 语音信号的采集
录制一段自己的话音,或利用老师给的语音,在MATLAB软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。
wavrecord(2*fs,fs)
4.2语音信号的频谱分析
要求画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性。
fft
4.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)(选做)设计IIR滤波器:
用双线性变换法设计上面要求的3种滤波器。
bilinear
(3)(选做)设计FIR滤波器:
用窗函数法设计上面要求的3种滤波器。
可以利用函数fir1设计FIR滤波器。
(4)函数freqz画出各滤波器的频率响应。
4.4 用滤波器对信号进行滤波,比较滤波前后语音信号的波形及频谱
要求用自己设计的各滤波器分别对采集的语音信号进行滤波,并在一个窗口同时画出滤波前后的波形及频谱。
(1)IIR滤波器利用函数filter对信号进行滤波;
(2)FIR滤波器利用函数fftfilt对信号进行滤波。
4.5回放语音信号
在MATLAB中,函数sound可以对声音进行回放。
其调用格式:
sound(x,fs,bits);可以感觉滤波前后的声音有变化。
4.6(选做)设计系统界面
为了使编制的程序操作方便,要求有能力的学生,设计处理系统的用户界面。
在所设计的系统界面上可以选择滤波器的类型,输入滤波器的参数,显示滤波器的频率响应,选择信号等。
5滤波器设计方法综述
滤波器的设计步骤:
1)给出系统的性能指标;
2)用一个离散的时间系统逼近这些性能指标;
3)实现该系统.一般我们利用数字计算的方法实现系统,所以,将该离散时间滤波器称为数字滤波器.滤波器的指标往往是以频域的形式给出的,尤其是低通,带通,高通和带阻这些选频滤波器.如图所示的一个线性时不变离散系统,如果输入是带限的,且采样率满足奈奎斯特采样率,这系统是一个线性时不变的连续系统.
H(ejΩT),Ω<π/TωHeff(jΩ)=H(ejω)=Heff(j),ωπ/T
6实验程序
fs=22050;%语音信号采样频率为22050
x1=wavread('WindowsCriticalStop.wav');%读取语音信号的数据,赋给变量x1
sound(x1,22050);%播放语音信号
y1=fft(x1,1024);%对信号做1024点FFT变换
f=fs*(0:
511)/1024;
figure
(1)
plot(x1)%做原始语音信号的时域图形
title('原始语音信号');
xlabel('timen');
ylabel('fuzhin');
figure
(2)
freqz(x1)%绘制原始语音信号的频率响应图
title('频率响应图')
figure(3)
subplot(2,1,1);
plot(abs(y1(1:
512)))%做原始语音信号的FFT频谱图
title('原始语音信号FFT频谱')
subplot(2,1,2);
plot(f,abs(y1(1:
512)));
title('原始语音信号频谱')
xlabel('Hz');
ylabel('fuzhi');
程序2:
fs=22050;%语音信号采样频率为22050
x1=wavread('WindowsCriticalStop.wav');%读取语音信号的数据,赋给变量x1
t=0:
1/22050:
(size(x1)-1)/22050;
y1=fft(x1,1024);%对信号做1024点FFT变换
f=fs*(0:
511)/1024;
x2=randn(1,length(x1));%产生一与x长度一致的随机信号
sound(x2,22050);
figure
(1)
plot(x2)%做原始语音信号的时域图形
title('高斯随机噪声');
xlabel('timen');
ylabel('fuzhin');
randn('state',0);
m=randn(size(x1));
x2=0.1*m+x1;
sound(x2,22050);%播放加噪声后的语音信号
y2=fft(x2,1024);
figure
(2)
plot(t,x2)
title('加噪后的语音信号');
xlabel('timen');
ylabel('fuzhin');
figure(3)
subplot(2,1,1);
plot(f,abs(y2(1:
512)));
title('原始语音信号频谱');
xlabel('Hz');
ylabel('fuzhi');
subplot(2,1,2);
plot(f,abs(y2(1:
512)));
title('加噪后的语音信号频谱');
xlabel('Hz');
ylabel('fuzhi');
根据以上代码,你可以修改下面有错误的代码
程序3:
双线性变换法设计Butterworth滤波器
fs=22050;
x1=wavread('h:
\课程设计2\shuzi.wav');
t=0:
1/22050:
(size(x1)-1)/22050;
Au=0.03;
d=[Au*cos(2*pi*5000*t)]';
x2=x1+d;
wp=0.25*pi;
ws=0.3*pi;
Rp=1;
Rs=15;
Fs=22050;
Ts=1/Fs;
wp1=2/Ts*tan(wp/2);%将模拟指标转换成数字指标
ws1=2/Ts*tan(ws/2);
[N,Wn]=buttord(wp1,ws1,Rp,Rs,'s');%选择滤波器的最小阶数
[Z,P,K]=buttap(N);%创建butterworth模拟滤波器
[Bap,Aap]=zp2tf(Z,P,K);
[b,a]=lp2lp(Bap,Aap,Wn);
[bz,az]=bilinear(b,a,Fs);%用双线性变换法实现模拟滤波器到数字滤波器的转换
[H,W]=freqz(bz,az);%绘制频率响应曲线
figure
(1)
plot(W*Fs/(2*pi),abs(H))
grid
xlabel('频率/Hz')
ylabel('频率响应幅度')
title('Butterworth')
f1=filter(bz,az,x2);
figure
(2)
subplot(2,1,1)
plot(t,x2)%画出滤波前的时域图
title('滤波前的时域波形');
subplot(2,1,2)
plot(t,f1);%画出滤波后的时域图
title('滤波后的时域波形');
sound(f1,22050);%播放滤波后的信号
F0=fft(f1,1024);
f=fs*(0:
511)/1024;
figure(3)
y2=fft(x2,1024);
subplot(2,1,1);
plot(f,abs(y2(1:
512)));%画出滤波前的频谱图
title('滤波前的频谱')
xlabel('Hz');
ylabel('fuzhi');
subplot(2,1,2)
F1=plot(f,abs(F0(1:
512)));%画出滤波后的频谱图
title('滤波后的频谱')
xlabel('Hz');
ylabel('fuzhi');
程序4:
窗函数法设计滤波器:
fs=22050;
x1=wavread('h:
\课程设计2\shuzi.wav');
t=0:
1/22050:
(size(x1)-1)/22050;
Au=0.03;
d=[Au*cos(2*pi*5000*t)]';
x2=x1+d;
wp=0.25*pi;
ws=0.3*pi;
wdelta=ws-wp;
N=ceil(6.6*pi/wdelta);%取整
wn=(0.2+0.3)*pi/2;
b=fir1(N,wn/pi,hamming(N+1));%选择窗函数,并归一化截止频率
figure
(1)
freqz(b,1,512)
f2=filter(bz,az,x2)
figure
(2)
subplot(2,1,1)
plot(t,x2)
title('滤波前的时域波形');
subplot(2,1,2)
plot(t,f2);
title('滤波后的时域波形');
sound(f2,22050);%播放滤波后的语音信号
F0=fft(f2,1024);
f=fs*(0:
511)/1024;
figure(3)
y2=fft(x2,1024);
subplot(2,1,1);
plot(f,abs(y2(1:
512)));
title('滤波前的频谱')
xlabel('Hz');
ylabel('fuzhi');
subplot(2,1,2)
F2=plot(f,abs(F0(1:
512)));
title('滤波后的频谱')
xlabel('Hz');
ylabel('fuzhi');
试验结果:
图一(语音信号的采集)
图二(语音信号频谱分析)
图三(低通滤波器)
图四(高通滤波器)
图五(滤波前后频谱比较)
7设计总结
通过这次设计,使我对语音信号有了全面的认识,对数字信号处理又有了深刻的理解,在之前数字信号与处理的学习中,已经使用过matlab,对其有了一些基础的了解和认识。
通过这次练习使我进一步了解语音信号的采集、频谱分析以及滤波器设计放方法。
以及在其中产生信号和绘制信号的基本命令和一些基础编程语言。
让我感受到只有在了解课本知识的前提下,才能更好的应用这个工具;并且熟练的应用matlab也可以很好的加深我对课程的理解,方便我的思维。
这次设计使我学会分析滤波器的优劣和性能,提高分析与动手时间能力。
同时我相信,进一步对matlab的学习与研究对我今后的学习将会起到很大的帮助。
8参考文献
(1)唐建锋,游开明,陈列尊.基于Matlab的数字滤波器设计研究型实验探讨(B).现代电子技术,2006;14-001-02,1-2.
(2)侯宁.Matlab在数字滤波器设计中的应用,化学工程与装备,2008;59-62.
(3)李铖,蒋维.定点DSP中的数字滤波器应用.仪器仪表用,2006;06-0067-02.
(4)[美]哈里Y-F拉姆.模拟和数字滤波器设计与实现.北京市:
人民邮电出版社,1985.405-450.
(5)[美]A·安东尼奥.数字滤波器分析与设计.西安市:
陕西科学技术出版社,1984.210-240.
(6)邹理和.数字滤波器.北京市:
国防工业出版社,1979.80-100.
题目二:
DSP在数字识别中的应用
1课程设计的目的:
1).掌握数字信号处理的基本概念、基本理论和基本方法;
2).掌握图像处理的常用算法;
3).掌握数字信号处理在数字识别中的应用及数字识别使用的基本算法;
4).学会DSP的使用,掌握DSP的程序设计方法;
5).学会用DSP对数字图像进行分析和处理。
2课程设计内容:
把含有数字的图像,如车牌,身份证等读取到DSP的SDRAM中,利用图像处理算法把数字从图像中定位出来;首先把图像二值化,二值化算法选择固定阈值、直方图或最大类间方差法,比较各个二值化算法的效果;对二值化的图像做边缘提取,选择Sobel或者Laplace边缘提取算法并比较效果;经过二值化和边缘提取后的图像,利用投影法定位数字在图像中的位置,并给出数字在图像中的外接矩形;利用CCS把处理结果显示出来。
3课程设计基础:
DSP编程基础、数字信号处理知识、图像处理知识。
4具体步骤与要求:
4.1 数字图像的采集
拍摄含有数字的图像,或利用老师给的图像,在DSPCCS软件平台下,编程把图像读取到DSP的SDRAM中。
4.2二值化
要求完成固定阈值、直方图或最大类间方差法二值化算法,并比较算法处理结果,选择合适的二值化算法,得到二值化后的图像并显示。
要求:
(5)固定阈值法,选择多个阈值比较处理,最终选择合适的阈值;
(6)(选做)直方图阈值法,绘制直方图并显示。
一幅图像包括目标物体、背景还有噪声,要想从多值的数字图像中直接提取出目标物体,最常用的方法就是设定一个阈值T,用T将图像的数据分成两部分:
大于T的像素群和小于T的像素群。
这是研究灰度变换的最特殊的方法,称为图像的二值化。
二值化方法:
(1)全局二值化
一幅图像包括目标物体、背景还有噪声,要想从多值的数字图像中直接提取出目标物体,最常用的方法就是设定一个全局的阈值T,用T将图像的数据分成两部分:
大于T的像素群和小于T的像素群。
将大于T的像素群的像素值设定为白色(或者黑色),小于T的像素群的像素值设定为黑色(或者白色)。
全局二值化,在表现图像细节方面存在很大缺陷。
为了弥补这个缺陷,出现了局部二值化方法。
局部二值化的方法就是按照一定的规则将整幅图像划分为N个窗口,对这N个窗口中的每一个窗口再按照一个统一的阈值T将该窗口内的像素划分为两部分,进行二值化处理。
(2)局部自适应二值化
局部二值化也有一个缺陷。
这个缺陷存在于那个统一阈值的选定。
这个阈值是没有经过合理的运算得来,一般是取该窗口的平局值。
这就导致在每一个窗口内仍然出现的是全局二值化的缺陷。
为了解决这个问题,就出现了局部自适应二值化方法。
局部自适应二值化,该方法就是在局部二值化的基础之上,将阈值的设定更加合理化。
该方法的阈值是通过对该窗口像素的平均值E,像素之间的差平方P,像素之间的均方根值Q等各种局部特征,设定一个参数方程进行阈值的计算,例如:
T=a*E+b*P+c*Q,其中a,b,c是自由参数。
这样得出来的二值化图像就更能表现出二值化图像中的细节。
4.3边缘提取
边缘提取采用Sobel或Laplace算法,
要求:
(1)Sobel和Laplace算法使用3*3模板;
(2)(选做)Canny边缘提取算法。
边缘提取编程比较:
I=imread('lena.bmp');%提取图像
1)BW1=edge(I,'sobel');%用SOBEL算子进行边缘检测
2)BW2=edge(I,'roberts');%用Roberts算子进行边缘检测
3)BW3=edge(I,'prewitt');%用prewitt算子进行边缘检测
4)BW4=edge(I,'log');%用log算子进行边缘检测
5)BW5=edge(I,'canny');%用canny算子进行边缘检测
4.4 数字定位
要求用自己设计的二值化结果对目标位置进行定位,给出数字的外接矩形和中心;
(3)利用投影法把二值化结果分别向水平和垂直方向投影,选择合适的阈值定位出数字位置,并输出目标位置;
(4)利用修改像素值的方法,把外接矩形绘制到图像中并通过CCS显示。
5数字识别方法综述
模式识别(PatternRecognition)是指对表征事物或现象的各种形式的(数值的、文字的和逻辑关系的)信息进行处理和分析,以对事物或现象进行描述、辨认、分类和解释的过程,是信息科学和人工智能的重要组成部分。
模式识别又常称作模式分类,从处理问题的性质和解决问题的方法等角度,模式识别分为有监督的分类(SupervisedClassification)和无监督的分类(UnsupervisedClassification)两种。
二者的主要差别在于,各实验样本所属的类别是否预先已知。
模式还可分成抽象的和具体的两种形式。
前者如意识、思想、议论等,属于概念识别研究的范畴,是人工智能的另一研究分支。
我们所指的模式识别主要是对语音波形、地震波、心电图、脑电图、图片、照片、文字、符号、生物传感器等对象的具体模式进行辨识和分类。
6程序
/***********************************************************************
**MainFunctionProgram
***********************************************************************/
#include"math.h"
#include"stdio.h"
#defineIMAGE_WIDTH128
#defineIMAGE_HEIGTH32
voidmain()
{
FILE*fi;
inti,j,k;
inty[IMAGE_HEIGTH][IMAGE_WIDTH];
intp[128]={0},p1[128]={0},p2[128]={0},m,temp,up,down,num=0,
flag=0;
unsignedcharid[128];
fi=fopen("E:
\\lu.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); i=0; for(i=0;i { for(j=0;j { y[i][j]=255*((y[i][j])/200); } } for(i=0;i { for(j=0;j { if(y[i][j]>=200) p[i]++; } } 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; } } //画线 /*for(j=0;j { y[up][j]=255; y[up][j]=255; } for(j=0;j { y[down][j]=255; y[down][j]=255; } */ //fenge for(i=0;i { for(j=0;j { if(y[j][i]==255) {p[i]++;} } } 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; } } } /*********************************************************************** **EndofFile ***********************************************************************/ 7设计结果 图一(实验过程) 图二(试验结果) 图三(试验结果) 8设计总结 通过这次设计,使我对数字识别有了全面的认识,对dsp数字图像处理又有了深刻的理解,在之前数字信号与处理的学习中,已经使用过keilC,对其有了一些基
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- dsp 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)