DSP实习报告模板

DSP实习报告模板
DSP实习报告模板

DSP应用技术实习报告

课程课题:基于DSP的键盘控制数字图像处理

方式及LCD显示

专业班级:电子信息科学与技术

学生姓名:

指导教师:邹修国李林徐友杨红兵

完成时间:

一、课程内容:

?掌握直方图统计的原理和程序设计

?了解边缘检测的算法和用途

?了解锐化的算法和用途

?了解取反的算法和用途

?掌握直方图均衡化增强的原理和程序设计

?了解液晶显示器的显示控制原理及编程方法

?了解键盘的使用原理及编程方法

二、设计功能及工作原理

能够实现功能:

?数字图像直方图统计

?数字图像边缘检测(Sobel算子)

?数字图像的锐化(LAPLACE算子)

?数字图像的取反

?数字图像直方图均衡化增强

通过键盘的输入可以控制图像处理的方式,并且LCD显示何种处理方式。

工作原理:

◆灰度直方图是灰度值的函数,描述的是图像中具有该灰度值的像素的个数,其横坐标表

示像素的灰度级别,纵坐标表示的是该灰度出现的频率。

◆边缘检测算子检查每个像素的邻域并对灰度变化率进行量化,也包括方向的确定。大多

数使用基于方向导数掩模求卷积的方法。

◆图像的锐化处理就是使模糊的图像变得更加清晰起来,拉普拉斯锐化法属于常用的一种

微分锐化方法。

◆求反处理的图像与原来的图像黑白颠倒,取得类似照片底片的效果。

◆直方图增强的方法就是压缩直方图中比例少的像素所占用的灰度范围,多出来的灰度空

间按照统计比例分配给直方图中比例高的像素使用。

三、设计过程

1.各种功能工程的分别建立:

?数字图像直方图统计

?数字图像边缘检测(Sobel算子)

?数字图像的锐化(LAPLACE算子)

?数字图像的取反

?数字图像直方图均衡化增强

?键盘输入

?液晶显示器控制显示

2.将各个功能模块进行组合:

1)打开键盘输入的工程文件,浏览key.c文件内容;

2)打开数字图像直方图统计的工程文件,将Histo.c主函数内的处理部分的代码复制到

key.c文件的case1语句后;

3)打开数字图像边缘检测的工程文件,将Image.c主函数内的处理不放入内的代码复制

到key.c文件的case2语句后;

4)打开数字图像锐化的工程文件,将Image.c主函数内的处理不放入内的代码复制到

key.c文件的case3语句后;

5)打开数字图像取反的工程文件,将Image.c主函数内的处理不放入内的代码复制到

key.c文件的case4语句后;

6)打开数字图像直方图均衡化增强的工程文件,将Histo.c主函数内的处理不放入内的

代码复制到key.c文件的case5语句后;

7)内存空间的修改,打开cmd代码,做以下修改

-w

-stack 1000

-heap 1000

-sysstack 1000

-l rts55x.lib

以及DARAM2: o=0x8100, l=0x30000

8)打开液晶显示的工程文件,利用字模显示工具分别对所需要显示的字进行字模显示,得到扫描代码,对原有工程文件主函数进行修改,再对key,c的主函数进行添加和修改。

9)编译并下载程序

10)打开观察窗口

进行窗口设各项参数设置,分别打开三个,一个用于原图显示,一个用于直方图显示,一个用于处理后图像显示。

进行断点调试,观察图像变化,以及LCD显示。

3.主要的代码

主函数

main()

{

int dbScanCode,i;

PLL_Init(20);

SDRAM_init();

InitCTR();

TurnOnLCD(); // 打开显示

LCDCLS(); // 清除显示内存

CTRLCDCMDR=LCDCMDSTARTLINE; // 设置显示起始行Delay(LCDDELAY);

CTRLCDCR=0;

Delay(LCDDELAY);

for (;;)

{

CTRLCDCMDR=LCDCMDPAGE; // 设置操作页=0

Delay(LCDDELAY);

CTRLCDCR=0;

Delay(LCDDELAY);

CTRLCDCMDR=LCDCMDVERADDRESS; // 起始列=0

Delay(LCDDELAY);

CTRLCDCR=0;

Delay(LCDDELAY);

dbScanCode=GetKey();

dbScanCode&=0x0ff;

if(dbScanCode==SCANCODE_9) break;

switch(dbScanCode)

{

case 1:

CTRLR=0x1;

CTRLR=0x40;

for ( i=0;i<50;i++ )

{

CTRLCDRCR=ledkey[1][i]; // 屏幕左侧第1至8行第i列赋值 port8002=0; // (赋值后当前操作列自动加1,所以不需设置)

Delay(LCDDELAY);

CTRLCDCR=0;

Delay(LCDDELAY);

}

Delay(512);

InitImage(MODEGRAYBAR,dbImage,IMAGEWIDTH,IMAGEHEIGHT);

Histogram(dbImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram);

InitImage(MODEGRAY,dbImage,IMAGEWIDTH,IMAGEHEIGHT); //BreakPoint Histogram(dbImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram);

InitImage(MODEPHOTO1,dbImage,IMAGEWIDTH,IMAGEHEIGHT); //BreakPoint Histogram(dbImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram);

InitImage(MODEPHOTO2,dbImage,IMAGEWIDTH,IMAGEHEIGHT); //BreakPoint Histogram(dbImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram);

InitImage(MODEPHOTO3,dbImage,IMAGEWIDTH,IMAGEHEIGHT); //BreakPoint Histogram(dbImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram);

InitImage(MODEPHOTO4,dbImage,IMAGEWIDTH,IMAGEHEIGHT); //BreakPoint Histogram(dbImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram);

break;

case 2:

CTRLR=0x2;

CTRLR=0x40;

for ( i=0;i<50;i++ )

{

CTRLCDRCR=ledkey[2][i]; // 屏幕左侧第1至8行第i列赋值 port8002=0; // (赋值后当前操作列自动加1,所以不需设置)

Delay(LCDDELAY);

CTRLCDCR=0;

Delay(LCDDELAY);

}

Delay(512);

InitImage(MODEGRAYBAR,dbImage,IMAGEWIDTH,IMAGEHEIGHT);

Sobel(IMAGEWIDTH,IMAGEHEIGHT);

InitImage(MODEGRAY,dbImage,IMAGEWIDTH,IMAGEHEIGHT); //BreakPoint Sobel(IMAGEWIDTH,IMAGEHEIGHT);

InitImage(MODEPHOTO1,dbImage,IMAGEWIDTH,IMAGEHEIGHT);//BreakPoint Sobel(IMAGEWIDTH,IMAGEHEIGHT);

InitImage(MODEPHOTO2,dbImage,IMAGEWIDTH,IMAGEHEIGHT);//BreakPoint Sobel(IMAGEWIDTH,IMAGEHEIGHT);

InitImage(MODEPHOTO3,dbImage,IMAGEWIDTH,IMAGEHEIGHT); //BreakPoint Sobel(IMAGEWIDTH,IMAGEHEIGHT);

InitImage(MODEPHOTO4,dbImage,IMAGEWIDTH,IMAGEHEIGHT); //BreakPoint Sobel(IMAGEWIDTH,IMAGEHEIGHT);

break;

case 3:

CTRLR=0x4;

CTRLR=0x40;

for ( i=0;i<50;i++ )

{

CTRLCDRCR=ledkey[3][i]; // 屏幕左侧第1至8行第i列赋值

port8002=0; // (赋值后当前操作列自动加1,所以不需设置)

Delay(LCDDELAY);

CTRLCDCR=0;

Delay(LCDDELAY);

}

Delay(512);

InitImage(MODEGRAYBAR,dbImage,IMAGEWIDTH,IMAGEHEIGHT);

Laplace(IMAGEWIDTH,IMAGEHEIGHT);

InitImage(MODEGRAY,dbImage,IMAGEWIDTH,IMAGEHEIGHT); //BreakPoint Laplace(IMAGEWIDTH,IMAGEHEIGHT);

InitImage(MODEPHOTO1,dbImage,IMAGEWIDTH,IMAGEHEIGHT);//BreakPoint Laplace(IMAGEWIDTH,IMAGEHEIGHT);

InitImage(MODEPHOTO2,dbImage,IMAGEWIDTH,IMAGEHEIGHT);//BreakPoint Laplace(IMAGEWIDTH,IMAGEHEIGHT);

InitImage(MODEPHOTO3,dbImage,IMAGEWIDTH,IMAGEHEIGHT);//BreakPoint Laplace(IMAGEWIDTH,IMAGEHEIGHT);

InitImage(MODEPHOTO4,dbImage,IMAGEWIDTH,IMAGEHEIGHT);//BreakPoint

Laplace(IMAGEWIDTH,IMAGEHEIGHT);

break;

case 4:

CTRLR=0x0;

CTRLR=0x48;

for ( i=0;i<50;i++ )

{

CTRLCDRCR=ledkey[4][i]; // 屏幕左侧第1至8行第i列赋值

port8002=0; // (赋值后当前操作列自动加1,所以不需设置)

Delay(LCDDELAY);

CTRLCDCR=0;

Delay(LCDDELAY);

}

Delay(512);

InitImage(MODEGRAYBAR,dbImage,IMAGEWIDTH,IMAGEHEIGHT);

Reverse(IMAGEWIDTH,IMAGEHEIGHT);

InitImage(MODEGRAY,dbImage,IMAGEWIDTH,IMAGEHEIGHT); //BreakPoint Reverse(IMAGEWIDTH,IMAGEHEIGHT);

InitImage(MODEPHOTO1,dbImage,IMAGEWIDTH,IMAGEHEIGHT);//BreakPoint Reverse(IMAGEWIDTH,IMAGEHEIGHT);

InitImage(MODEPHOTO2,dbImage,IMAGEWIDTH,IMAGEHEIGHT);//BreakPoint Reverse(IMAGEWIDTH,IMAGEHEIGHT);

InitImage(MODEPHOTO3,dbImage,IMAGEWIDTH,IMAGEHEIGHT);//BreakPoint Reverse(IMAGEWIDTH,IMAGEHEIGHT);

InitImage(MODEPHOTO4,dbImage,IMAGEWIDTH,IMAGEHEIGHT);//BreakPoint Reverse(IMAGEWIDTH,IMAGEHEIGHT);

break;

case 5:

CTRLR=0x0;

CTRLR=0x50;

for ( i=0;i<50;i++ )

{

CTRLCDRCR=ledkey[5][i]; // 屏幕左侧第1至8行第i列赋值

port8002=0; // (赋值后当前操作列自动加1,所以不需设置)

Delay(LCDDELAY);

CTRLCDCR=0;

Delay(LCDDELAY);

}

Delay(512);

InitImage(MODEGRAYBAR,dbImage,IMAGEWIDTH,IMAGEHEIGHT);

Histogram(dbImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram);

Enhance(dbImage,dbTargetImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram,fHistogram1); Histogram(dbTargetImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram1);

InitImage(MODEGRAY,dbImage,IMAGEWIDTH,IMAGEHEIGHT); //BreakPoint

Histogram(dbImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram);

Enhance(dbImage,dbTargetImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram,fHistogram1);

Histogram(dbTargetImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram1);

InitImage(MODEPHOTO1,dbImage,IMAGEWIDTH,IMAGEHEIGHT); //BreakPoint

Histogram(dbImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram);

Enhance(dbImage,dbTargetImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram,fHistogram1);

Histogram(dbTargetImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram1);

InitImage(MODEPHOTO2,dbImage,IMAGEWIDTH,IMAGEHEIGHT); //BreakPoint

Histogram(dbImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram);

Enhance(dbImage,dbTargetImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram,fHistogram1);

Histogram(dbTargetImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram1);

InitImage(MODEPHOTO3,dbImage,IMAGEWIDTH,IMAGEHEIGHT); //BreakPoint

Histogram(dbImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram);

Enhance(dbImage,dbTargetImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram,fHistogram1);

Histogram(dbTargetImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram1);

InitImage(MODEPHOTO4,dbImage,IMAGEWIDTH,IMAGEHEIGHT); //BreakPoint

Histogram(dbImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram);

Enhance(dbImage,dbTargetImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram,fHistogram1);

Histogram(dbTargetImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram1);

while(1);

break;

case 6:

for ( i=0;i<50;i++ )

{

CTRLCDRCR=ledkey[6][i]; // 屏幕左侧第1至8行第i列赋值

port8002=0; // (赋值后当前操作列自动加1,所以不需设置)

Delay(LCDDELAY);

CTRLCDCR=0;

Delay(LCDDELAY);

}

Delay(512);

CTRLR=0x0;

CTRLR=0x60;

break;

case 7:

for ( i=0;i<50;i++ )

{

CTRLCDRCR=ledkey[7][i]; // 屏幕左侧第1至8行第i列赋值

port8002=0; // (赋值后当前操作列自动加1,所以不需设置)

Delay(LCDDELAY);

CTRLCDCR=0;

Delay(LCDDELAY);

}

Delay(512);

CTRLR=0x8;

CTRLR=0x40;

break;

case 8:

for ( i=0;i<50;i++ )

{

CTRLCDRCR=ledkey[8][i]; // 屏幕左侧第1至8行第i列赋值 port8002=0; // (赋值后当前操作列自动加1,所以不需设置)

Delay(LCDDELAY);

CTRLCDCR=0;

Delay(LCDDELAY);

}

Delay(512);

CTRLR=0x10;

CTRLR=0x40;

break;

}

Delay(16);

}

CloseCTR();

exit(0);

}

void Histogram(unsigned char *pImage,int nWidth,int nHeight,float fHisto[256]) {

int i,j;

unsigned int uWork;

unsigned char *pWork;

for ( i=0;i<256;i++ ) fHisto[i]=0.0f;

pWork=pImage;

for ( i=0;i

{

for ( j=0;j

{

uWork=(unsigned int)(*pWork);

fHisto[uWork]++;

}

}

uWork=nWidth*nHeight;

for ( i=0;i<256;i++ )

{

fHisto[i]/=uWork;

fHisto[i]*=100;

}

}

void Enhance(unsigned char *pImage,unsigned char *pImage1,int nWidth,int nHeight,float fHisto[256],float fHisto1[256])

{

int i,j;

unsigned int uWork;

unsigned char *pWork,*pWork1;

for ( i=0;i<256;i++ )

fHisto1[i]=fHisto[i]/100;

for ( i=1;i<256;i++ )

fHisto1[i]+=fHisto1[i-1];

for ( i=0;i<256;i++ )

lut[i]=fHisto1[i]*256;

for ( i=0;i<256;i++ )

if ( lut[i]>=256 )

lut[i]=255;

pWork=pImage; pWork1=pImage1;

for ( i=0;i

for ( j=0;j

(*pWork1)=lut[(*pWork)];

}

字显示部分的修改代码

unsigned char ledkey[10][50]=

{

{0x00,0x00,0x7C,0x82,0x82,0x82,0x7C,0x00}, //0

{0xFC,0x00,0x20,0x00,0x20,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x84,0x00,0xFC ,0x00,0x84,0x00,0x00,0x00,0x4C,0x00,0x92,0x00,0x92,0x00,0x64,0x00,0x00,0x00,0x0 4,0x00,0x04,0x00,0xFC,0x00,0x04,0x00,0x04,0x00,0x78,0x00,0x84,0x00,0x84,0x00,0x 78,0x00,0x00,0x00}, //1

{0x4C,0x00,0x92,0x00,0x92,0x00,0x64,0x00,0x00,0x00,0x78,0x00,0x84,0x00,0x84 ,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x94,0x00,0x94,0x00,0x6C,0x00,0x0 0,0x00,0xFC,0x00,0x94,0x00,0x94,0x00,0x84,0x00,0x00,0x00,0xFC,0x00,0x80,0x00,0x 80,0x00,0x80,0x00}, //2

{0x00,0x00,0xFC,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x00,0x00,0xF8,0x00,0x2C ,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x24,0x00,0x24,0x00,0x18,0x00,0x0 0,0x00,0xFC,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x00,0x00,0xF8,0x00,0x2C,0x00,0x F8,0x00,0x00,0x00},

{0xF8,0x00,0x14,0x00,0x14,0x00,0x34,0x00,0xC8,0x00,0x00,0x00,0xFC,0x00,0x94 ,0x00,0x94,0x00,0x84,0x00,0x00,0x00,0x7C,0x00,0x80,0x00,0x7C,0x00,0x00,0x00,0x0 0,0x00,0xFC,0x00,0x94,0x00,0x94,0x00,0x84,0x00,0xF8,0x00,0x14,0x00,0x14,0x00,0x 34,0x00,0xC8,0x00},

{0x00,0x00,0xFC,0x00,0x94,0x00,0x94,0x00,0x84,0x00,0xFC,0x00,0x08,0x00,0x10 ,0x00,0x20,0x00,0xFC,0x00,0xFC,0x00,0x20,0x00,0x20,0x00,0xFC,0x00,0x00,0x00,0x0 0,0x00,0xF8,0x00,0x2C,0x00,0xF8,0x00,0x00,0x00,0xFC,0x00,0x08,0x00,0x10,0x00,0x 20,0x00,0xFC,0x00},

{0x00,0x00,0x7C,0x92,0x92,0x92,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0 0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x 00,0x00,0x00,0x00},

{0x00,0x00,0x02,0xC2,0x32,0x0A,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0 0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x 00,0x00,0x00,0x00},

{0x00,0x00,0x6C,0x92,0x92,0x92,0x6C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0 0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x

00,0x00,0x00,0x00},

{0x00,0x00,0x4C,0x92,0x92,0x92,0x7C,0x00}

四、设计工程的仿真图形

1. 数字图像直方图统计

2. 数字图像边缘检测(Sobel)

3. 数字图像锐化

4.数字图像的取反

5. 数字图像直方图均衡化增强

五、对设计工程总结与评价

经过仿真该系统能够完成预定的任务,我们的设计作品成功完成。

在实习过程中,我们遇到了很多的问题,从一开始不知道怎么将几个项目工程联系起来到内存存储空间的不知道如何分配再到寄存器的含义和种类的不清楚以及LCD显示的种种问题,但是在短短的两周时间里,我们将遇到的问题一个一个解决掉。这些问题都源于我们对DSP课程的掌握不够以及软件使用的不熟悉,在实习过程中老师的谆谆教导让我们收获良多,很多技术性的问题多亏了老师的指点。我们才能及时发现问题。在今后的设计制作系统中,我们一定要对所用的软件熟练操作,要注意团队意识,只有集众人之长,才可以将一个项目完成的无懈可击。

六、参考文献

1.戴明桢,周建江.TMS320C54x DSP结构原理及应用.北京航空航天大学出版社.2008,(11)2.戴逸民,梁晓雯.基于DSP的现代电子系统设计.电子工业出版社.2002,(2)

3.教学实验系统实验指导书.瑞泰创新

电气工程系DSP应用技术成绩评定表

数字信号处理(北航)实验二报告

数字信号处理实验二 信号的分析与处理综合实验 38152111 张艾一、实验目的 综合运用数字信号处理的理论知识进行信号的采样,重构,频谱分析和滤波器的设计,通过理论推导得出相应结论,再利用Matlab作为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。 二、基本要求 1.掌握数字信号处理的基本概念、基本理论和基本方法; 2.学会MATLAB的使用,掌握MATLAB的程序设计方法; 3.掌握用MATLAB设计简单实验验证采样定理的方法; 4.掌握在Windows环境下语音信号采集的方法; 5.学会用MATLAB对信号进行频谱分析; 6.掌握MATLAB设计FIR和IIR数字滤波器的方法; 三、实验内容 1.利用简单正弦信号设计实验验证采样定理: (1)Matlab产生离散信号的方法,作图的方法,以及基本运算操作 (2)对连续正弦信号以不同的采样频率作采样 (3)对采样前后信号进行傅立叶变换,并画频谱图 (4)分析采样前后频谱的有变化,验证采样定理。

掌握画频谱图的方法,深刻理解采样频率,信号频率,采样点数,频率分辨率等概念2.真实语音信号的采样重构:录制一段自己的语音信号,并对录制的信号进行采样;画出采样前后语音信号的时域波形和频谱图;对降采样后的信号进行插值重构,滤波,恢复原信号。 (1)语音信号的采集 (2)降采样的实现(改变了信号的采样率) (3)以不同采样率采样后,语音信号的频谱分析 (4)采样前后声音的变化 (5)对降采样后的信号进行插值重构,滤波,恢复原信号 3.带噪声语音信号的频谱分析 (1)设计一频率已知的噪声信号,与实验2中原始语音信号相加,构造带噪声信号(2)画出原始语音信号和加噪声后信号,以及它们的频谱图 (3)利用频谱图分析噪声信号和原语音信号的不同特性 4.对带噪声语音信号滤波去噪:给定滤波器性能指标,采样窗函数法或双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采样的语音信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化; 回放语音信号; (1)分析带噪声信号频谱,找出噪声所在的频率段 (2)利用matlab中已有的滤波器滤波 (3)根据语音信号特点,自己设计滤波器滤波 (4)比较各种滤波器性能(至少四种),选择一种合适的滤波器将噪声信号滤除 (5)回放语音信号,比较滤波前后声音的变化

数字信号处理基础实验指导书

《数字信号处理》实验指导书 光电工程学院二○○九年十月

实验一离散时间信号分析 一、实验目的 1.掌握各种常用的序列,理解其数学表达式和波形表示。 2.掌握在计算机中生成及绘制数字信号波形的方法。 3.掌握序列的相加、相乘、移位、反转等基本运算及计算机实现与作用。 4.掌握线性卷积软件实现的方法。 5.掌握计算机的使用方法和常用系统软件及应用软件的使用。 6.通过编程,上机调试程序,进一步增强使用计算机解决问题的能力。 二、实验原理 1.序列的基本概念 离散时间信号在数学上可用时间序列来表示,其中代表序列的第n个数字,n代表时间的序列,n的取值范围为的整数,n取其它值没有意义。离散时间信号可以是由模拟信号通过采样得到,例如对模拟信号进行等间隔采样,采样间隔为T,得到一个有序的数字序列就是离散时间信号,简称序列。 2.常用序列 常用序列有:单位脉冲序列(单位抽样)、单位阶跃序列、矩形序列、实指数序列、复指数序列、正弦型序列等。 3.序列的基本运算 序列的运算包括移位、反转、和、积、标乘、累加、差分运算等。 4.序列的卷积运算 上式的运算关系称为卷积运算,式中代表两个序列卷积运算。两个序列的卷积是一个序列与另一个序列反褶后逐次移位乘积之和,故称为离散卷积,也称两序列的线性卷积。其计算的过程包括以下4个步骤。 (1)反褶:先将和的变量换成,变成和,再将以纵轴为对称轴反褶成。 (2)移位:将移位,得。当为正数时,右移位;当为负数时,左

移位。 (3)相乘:将和的对应点值相乘。 (4)求和:将以上所有对应点的乘积累加起来,即得。 三、主要实验仪器及材料 微型计算机、Matlab软件6.5或更高版本。 四、实验内容 1.知识准备 认真复习以上基础理论,理解本实验所用到的实验原理。 2.离散时间信号(序列)的产生 利用MATLAB或C语言编程产生和绘制下列有限长序列: (1)单位脉冲序列 (2)单位阶跃序列 (3)矩形序列 (4)正弦型序列 (5)任意序列 3.序列的运算 利用MATLAB编程完成上述两序列的移位、反转、加法、乘法等运算,并绘制运算后序列的波形。 4.卷积运算 利用MATLAB编制一个计算两个序列线性卷积的通用程序,计算上述两序列,并绘制卷积后序列的波形。 5.上机调试并打印或记录实验结果。 6.完成实验报告。 五、实验报告要求 1. 简述实验原理及目的。 2. 给出上述序列的实验结果。 3. 列出计算卷积的公式,画出程序框图,并列出实验程序清单 (可略)(包括必要的程序说明)。 4. 记录调试运行情况及所遇问题的解决方法。 5. 给出实验结果,并对结果做出分析。 6. 简要回答思考题。 1 如何产生方波信号序列和锯齿波信号序列? 2 实验中所产生的正弦序列的频率是多少?是否是周期序列?

数字信号处理实验报告

实验一 1.分析并绘出常用函数(a) 锯齿波; (b) 三角波; (c) 方波; (d) 抽样函数 的时域特性波形. 程序: clear alla¤ t=0:0.0001:0.1; x1=sawtooth(2*pi*50*t); %产生五个周期锯齿波 subplot(221) plot(t,x1) title('锯齿波110900623') xlabel('t') x2=sawtooth(2*pi*50*t,0.5); %产生五个周期三角波 subplot(222) plot(t,x2) xlabel('t') title('三角波110900623') x3=square(2*pi*50*t); %产生十个周期方波 subplot(223) plot(t,x3) xlabel('t') title('方波110900623') axis([0,0.1,-1.2,1.2]) t=-4:0.1:4; x4=sinc(t); %产生抽样信号 subplot(224) plot(t,x4) xlabel('t') axis([-5,5,-0.5,0.5]) title('抽样信号110900623') -1-0.500.51锯齿波110900623 t -1-0.500.51t 三角波110900623 -1-0.500.51t 方波 110900623 -0.5 0.5 t 抽样信号110900623

2.分析并绘出常用窗函数时域特性波形. clear all y1=boxcar(80); %矩形窗 plot(y1,'k') axis([-1,81,-0.2,1.2]) gtxst(‘矩形窗’) hold on y2=triang(80); %三角窗 plot(y2,'m.') hold on y3=hanning(80); %汉宁窗 plot(y3,'y*') gtxst(‘汉宁窗’) hold on y4=hamming(80); %海明窗 plot(y4,'r-') gtxst(‘海明窗’) hold on y5=blackman(80); %布莱克曼窗 plot(y5,'g:') gtxst(‘布莱克曼窗’) hold on y6=kaiser(80,7.865);%凯塞-贝尔窗 plot(y6,'b-.') gtxst(‘凯塞-贝尔窗’) title('常用窗函数110900623') 01020304050607080 -0.2 0.2 0.4 0.6 0.8 1 窗常用窗函数110900623

数字信号处理实验(吴镇扬)答案-2

(1) 观察高斯序列的时域和幅频特性,固定信号)(n x a 中参数p=8,改变q 的 值,使q 分别等于2、4、8,观察他们的时域和幅频特性,了解当q 取不同值时,对信号序列的时域和幅频特性的影响;固定q=8,改变p,使p 分别等于8、13、14,观察参数p 变化对信号序列的时域和幅频特性的影响,注意p 等于多少时会发生明显的泄漏现象,混叠是否也随之出现?记录实验中观察到的现象,绘出相应的时域序列和幅频特性曲线。 ()() ?????≤≤=-其他0150,2n e n x q p n a 解:程序见附录程序一: P=8,q 变化时: t/T x a (n ) k X a (k ) t/T x a (n ) p=8 q=4 k X a (k ) p=8 q=4 t/T x a (n ) p=8 q=8 k X a (k ) p=8 q=8 幅频特性 时域特性

t/T x a (n ) p=8 q=8 k X a (k ) p=8 q=8 t/T x a (n ) 5 10 15 k X a (k ) p=13 q=8 t/T x a (n ) p=14 q=8 5 10 15 k X a (k ) p=14 q=8 时域特性幅频特性 分析: 由高斯序列表达式知n=p 为期对称轴; 当p 取固定值时,时域图都关于n=8对称截取长度为周期的整数倍,没有发生明显的泄漏现象;但存在混叠,当q 由2增加至8过程中,时域图形变化越来越平缓,中间包络越来越大,可能函数周期开始增加,频率降低,渐渐小于fs/2,混叠减弱; 当q 值固定不变,p 变化时,时域对称中轴右移,截取的时域长度渐渐地不再是周期的整数倍,开始无法代表一个周期,泄漏现象也来越明显,因而图形越来越偏离真实值, p=14时的泄漏现象最为明显,混叠可能也随之出现;

数字信号处理实验报告

Name: Section: Laboratory Exercise 2 DISCRETE-TIME SYSTEMS: TIME-DOMAIN REPRESENTATION 2.1 SIMULATION OF DISCRETE-TIME SYSTEMS Project 2.1The Moving Average System A copy of Program P2_1 is given below: % Program P2_1 % Simulation of an M-point Moving Average Filter % Generate the input signal n = 0:100; s1 = cos(2*pi*0.05*n); % A low-frequency sinusoid s2 = cos(2*pi*0.47*n); % A high frequency sinusoid x = s1+s2; % Implementation of the moving average filter M = input('Desired length of the filter = '); num = ones(1,M); y = filter(num,1,x)/M; % Display the input and output signals clf; subplot(2,2,1); plot(n, s1); axis([0, 100, -2, 2]); xlabel('Time index n'); ylabel('Amplitude'); title('Signal #1'); subplot(2,2,2); plot(n, s2); axis([0, 100, -2, 2]); xlabel('Time index n'); ylabel('Amplitude'); title('Signal #2'); subplot(2,2,3); plot(n, x); axis([0, 100, -2, 2]); xlabel('Time index n'); ylabel('Amplitude'); title('Input Signal'); subplot(2,2,4); plot(n, y); axis([0, 100, -2, 2]); xlabel('Time index n'); ylabel('Amplitude'); title('Output Signal'); axis;

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

《数字信号处理》课程设计报告 设计题目: IIR滤波器的设计 专业: 班级: 姓名: 学号: 指导教师: 2010年月日

1、设计目的 1、掌握IIR 滤波器的参数选择及设计方法; 2、掌握IIR 滤波器的应用方法及应用效果; 3、提高Matlab 下的程序设计能力及综合应用能力。 4、了解语音信号的特点。 2、设计任务 1、学习并掌握课程设计实验平台的使用,了解实验平台的程序设计方法; 2、录制并观察一段语音信号的波形及频谱,确定滤波器的技术指标; 3、根据指标设计一个IIR 滤波器,得到该滤波器的系统响应和差分方程,并根据差分方程将所设计的滤波器应用于实验平台,编写相关的Matlab 程序; 4、使用实验平台处理语音信号,记录结果并进行分析。 3、设计内容 3.1设计步骤 1、学习使用实验平台,参见附录1。 2、使用录音机录制一段语音,保存为wav 格式,录音参数为:采样频率8000Hz、16bit、单声道、PCM 编码,如图1 所示。 图1 录音格式设置 在实验平台上打开此录音文件,观察并记录其波形及频谱(可以选择一段较为稳定的语音波形进行记录)。 3、根据信号的频谱确定滤波器的参数:通带截止频率Fp、通带衰减Rp、阻带截止频率Fs、阻带衰减Rs。 4、根据技术指标使用matlab 设计IIR 滤波器,得到系统函数及差分方程,并记录得到系统函数及差分方程,并记录其幅频响应图形和相频响应图形。要求设计 第 1页出的滤波器的阶数小于7,如果不能达到要求,需要调整技术指标。 5、记录滤波器的幅频响应和系统函数。在matlab 中,系统函数的表示公式为:

因此,必须记录系数向量a 和b。系数向量a 和b 的可以在Matlab 的工作空间(WorkSpace)中查看。 6、根据滤波器的系统函数推导出滤波器的差分方程。 7、将设计的滤波器应用到实验平台上。根据设计的滤波器的差分方程在实验平台下编写信号处理程序。根据运行结果记录处理前后的幅频响应的变化情况,并试听处理前后声音的变化,将结果记录,写入设计报告。 3.2实验程序 (1)Rs=40; Fs=1400; Rp=0.7; Fp=450; fs=8000; Wp=2*pi*Fp;Ws=2*pi*Fs; [N,Wn]=buttord(Wp,Ws,Rp,Rs,'s'); [b1,a1]=butter(N,Wn,'s'); [b,a]=bilinear(b1,a1,fs); [H,W]=freqz(b,a); figure; subplot(2,1,1);plot(W*fs/(2*pi),abs(H));grid on;title('频率响应'); xlabel('频率');ylabel('幅值');、 subplot(2,1,2); plot(W,angle(H));grid on;title('频率响应'); xlabel('相位(rad)');ylabel('相频特性'); 3.3实验结果(如图): N =5 Wn=6.2987e+003 第 2页

数字信号处理实验报告(实验1_4)

实验一 MATLAB 仿真软件的基本操作命令和使用方法 实验容 1、帮助命令 使用 help 命令,查找 sqrt (开方)函数的使用方法; 2、MATLAB 命令窗口 (1)在MATLAB 命令窗口直接输入命令行计算3 1)5.0sin(21+=πy 的值; (2)求多项式 p(x) = x3 + 2x+ 4的根; 3、矩阵运算 (1)矩阵的乘法 已知 A=[1 2;3 4], B=[5 5;7 8],求 A^2*B

(2)矩阵的行列式 已知A=[1 2 3;4 5 6;7 8 9],求A (3)矩阵的转置及共轭转置 已知A=[1 2 3;4 5 6;7 8 9],求A' 已知B=[5+i,2-i,1;6*i,4,9-i], 求B.' , B' (4)特征值、特征向量、特征多项式 已知A=[1.2 3 5 0.9;5 1.7 5 6;3 9 0 1;1 2 3 4] ,求矩阵A的特征值、特征向量、特征多项式;

(5)使用冒号选出指定元素 已知:A=[1 2 3;4 5 6;7 8 9];求A 中第3 列前2 个元素;A 中所有列第2,3 行的元素; 4、Matlab 基本编程方法 (1)编写命令文件:计算1+2+…+n<2000 时的最大n 值;

(2)编写函数文件:分别用for 和while 循环结构编写程序,求 2 的0 到15 次幂的和。

5、MATLAB基本绘图命令 (1)绘制余弦曲线 y=cos(t),t∈[0,2π]

(2)在同一坐标系中绘制余弦曲线 y=cos(t-0.25)和正弦曲线 y=sin(t-0.5), t∈[0,2π] (3)绘制[0,4π]区间上的 x1=10sint 曲线,并要求: (a)线形为点划线、颜色为红色、数据点标记为加号; (b)坐标轴控制:显示围、刻度线、比例、网络线 (c)标注控制:坐标轴名称、标题、相应文本; >> clear;

数字信号处理实验报告

语音信号的数字滤波 一、实验目的: 1、掌握使用FFT进行信号谱分析的方法 2、设计数字滤波器对指定的语音信号进行滤波处理 二、实验内容 设计数字滤波器滤除语音信号中的干扰(4 学时) 1、使用Matlab的fft函数对语音信号进行频谱分析,找出干扰信号的频谱; 2、设计数字滤波器滤除语音信号中的干扰分量,并进行播放对比。 三、实验原理 通过观察原语音信号的频谱,幅值特别大的地方即为噪声频谱分量,根据对称性,发现有四个频率的正弦波干扰,将它们分别滤掉即可。采用梳状滤波器,经过计算可知,梳状滤波器h[n]={1,A,1}的频响|H(w)|=|A+2cos(w)|,由需要滤掉的频率分量的频响w,即可得到A,进而得到滤波器的系统函数h[n]。而由于是在离散频域内进行滤波,所以令w=(2k*pi/N)即可。 对原信号和四次滤波后的信号分别进行FFT变换,可以得到它们的幅度相应。最后,将四次滤波后的声音信号输出。 四、matlab代码 clc;clear;close all; [audio_data,fs]=wavread('SunshineSquare.wav'); %读取未处理声音 sound(audio_data,fs); N = length(audio_data); K = 0:2/N:2*(N-1)/N; %K为频率采样点

%sound(audio_data,fs); %进行一次FFT变换 FFT_audio_data=fft(audio_data); mag_FFT_audio_data = abs(FFT_audio_data); %画图 figure(1) %原信号时域 subplot(2,1,1);plot(audio_data);grid; title('未滤波时原信号时域');xlabel('以1/fs为单位的时间');ylabel('采样值'); %FFT幅度相位 subplot(2,1,2);plot(K,mag_FFT_audio_data);grid; title('原信号幅度');xlabel('以pi为单位的频率');ylabel('幅度'); %构造h[n]={1,A,1}的梳状滤波器,计算A=2cosW,妻子W为要滤掉的频率%由原信号频谱可知要分四次滤波,滤掉频响中幅度大的频率分量 %第一次滤波 a = [1,0,0,0];%y[n]的系数 [temp,k]=max(FFT_audio_data); A1=-2*cos(2*pi*k/N); h1=[1,A1,1]; audio_data_h1 = filter(h1,a,audio_data); FFT_audio_data_h1=fft(audio_data_h1);

数字信号处理期末综合实验报告

数字信号处理综合实验报告 实验题目:基于Matlab的语音信号去噪及仿真 专业名称: 学号: 姓名: 日期: 报告内容: 一、实验原理 1、去噪的原理 1.1 采样定理 在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中,最高频率fmax的2倍时,即:fs.max>=2fmax,则采样之后的数字信号完整地保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的5~10倍;采样定理又称奈奎斯特定理。1924年奈奎斯特(Nyquist)就推导出在理想低通信道的最高大码元传输速率的公式: 理想低通信道的最高大码元传输速率=2W*log2 N (其中W是理想低通信道的带宽,N是电平强度)为什么把采样频率设为8kHz?在数字通信中,根据采样定理, 最小采样频率为语音信号最高频率的

2倍 频带为F的连续信号f(t)可用一系列离散的采样值f(t1),f(t1±Δt),f(t1±2Δt),...来表示,只要这些采样点的时间间隔Δt≤1/2F,便可根据各采样值完全恢复原来的信号f(t)。这是时域采样定理的一种表述方式。 时域采样定理的另一种表述方式是:当时间信号函数f(t)的最高频率分量为fM时,f(t)的值可由一系列采样间隔小于或等于1/2fM的采样值来确定,即采样点的重复频率f≥2fM。图为模拟信号和采样样本的示意图。 时域采样定理是采样误差理论、随机变量采样理论和多变量采样理论的基础。对于时间上受限制的连续信号f(t)(即当│t│>T时,f(t)=0,这里T=T2-T1是信号的持续时间),若其频谱为F(ω),则可在频域上用一系列离散的采样值 (1-1) 采样值来表示,只要这些采样点的频率间隔 (1-2) 。 1.2 采样频率 采样频率,也称为采样速度或者采样率,定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示。采样频率的倒数是采样周期或者叫作采样时间,它是采样之间的时间间隔。通俗的讲采样频率是指计算

数字信号处理实验报告(同名22433)

《数字信号处理》 实验报告 课程名称:《数字信号处理》 学院:信息科学与工程学院 专业班级:通信1502班 学生姓名:侯子强 学号:0905140322 指导教师:李宏 2017年5月28日

实验一 离散时间信号和系统响应 一. 实验目的 1. 熟悉连续信号经理想采样前后的频谱变化关系,加深对时域采样定理的理解 2. 掌握时域离散系统的时域特性 3. 利用卷积方法观察分析系统的时域特性 4. 掌握序列傅里叶变换的计算机实现方法,利用序列的傅里叶变换对离散信号及系统响应进行频域分析 二、实验原理 1. 采样是连续信号数字化处理的第一个关键环节。对采样过程的研究不仅可以了解采样前后信号时域和频域特性的变化以及信号信息不丢失的条件,而且可以加深对离散傅里叶变换、Z 变换和序列傅里叶变换之间关系式的理解。 对连续信号()a x t 以T 为采样间隔进行时域等间隔理想采样,形成采样信号: ?()()()a a x t x t p t = 式中()p t 为周期冲激脉冲,$()a x t 为()a x t 的理想采样。 ()a x t 的傅里叶变换为μ ()a X j Ω: 上式表明将连续信号()a x t 采样后其频谱将变为周期的,周期为Ωs=2π/T 。也即采样信 号的频谱μ()a X j Ω是原连续信号xa(t)的频谱Xa(jΩ)在频率轴上以Ωs 为周期,周期延拓而成 的。因此,若对连续信号()a x t 进行采样,要保证采样频率fs ≥2fm ,fm 为信号的最高频率,才可能由采样信号无失真地恢复出原模拟信号 计算机实现时,利用计算机计算上式并不方便,因此我们利用采样序列的傅里叶变换来实现,即 ()() n P t t nT δ∞ =-∞ = -∑μ1()()*() 21 ()n a a a s X j X j P j X j jn T π∞ =-∞ Ω=ΩΩ= Ω-Ω∑μ()()|j a T X j X e ωω=ΩΩ=

数字信号处理实验答案完整版

数字信号处理实验答案 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

实验一熟悉Matlab环境 一、实验目的 1.熟悉MATLAB的主要操作命令。 2.学会简单的矩阵输入和数据读写。 3.掌握简单的绘图命令。 4.用MATLAB编程并学会创建函数。 5.观察离散系统的频率响应。 二、实验内容 认真阅读本章附录,在MATLAB环境下重新做一遍附录中的例子,体会各条命令的含义。在熟悉了MATLAB基本命令的基础上,完成以下实验。 上机实验内容: (1)数组的加、减、乘、除和乘方运算。输入A=[1 2 3 4],B=[3 4 5 6],求C=A+B,D=A-B,E=A.*B,F=A./B,G=A.^B并用stem语句画出A、B、C、D、E、F、G。 clear all; a=[1 2 3 4]; b=[3 4 5 6]; c=a+b; d=a-b; e=a.*b; f=a./b; g=a.^b; n=1:4; subplot(4,2,1);stem(n,a); xlabel('n');xlim([0 5]);ylabel('A'); subplot(4,2,2);stem(n,b); xlabel('n');xlim([0 5]);ylabel('B'); subplot(4,2,3);stem(n,c); xlabel('n');xlim([0 5]);ylabel('C'); subplot(4,2,4);stem(n,d); xlabel('n');xlim([0 5]);ylabel('D'); subplot(4,2,5);stem(n,e); xlabel('n');xlim([0 5]);ylabel('E'); subplot(4,2,6);stem(n,f); xlabel('n');xlim([0 5]);ylabel('F'); subplot(4,2,7);stem(n,g); xlabel('n');xlim([0 5]);ylabel('G'); (2)用MATLAB实现下列序列: a) x(n)= 0≤n≤15 b) x(n)=e+3j)n 0≤n≤15 c) x(n)=3cosπn+π)+2sinπn+π) 0≤n≤15 d) 将c)中的x(n)扩展为以16为周期的函数x(n)=x(n+16),绘出四个周期。

数字信号处理实验报告

数字信号处理实验报告 姓 名: 班 级: 13电信2 学 号: 2013302 2013302 2013302 指导老师: 日期: 华南农业大学电子工程学院 电子信息工程系 实验一 常见离散信号的MATLAB 产生和图形显示 一、实验目的 加深对常用离散信号的理解; 二.实验原理 1. 单位抽样序列 在MATLAB 中可以利用zeros()函数实现。 如果)(n δ在时间轴上延迟了k 个单位,得到)(k n -δ即: 2. 单位阶越序列 在MATLAB 中可以利用ones()函数实现。 3. 正弦序列 在MATLAB 中 4. 复正弦序列 在MATLAB 中 5. 指数序列 在MATLAB 中 6.卷积分析 conv.m 用来实现两个离散序列的线性卷积。 其调用格式是:y=conv(x,h) 若x 的长度为N ,h 的长度为M ,则y 的长度L=N+M-1。

三.实验内容 1.画出信号x(n) = 1.5*?(n+1) - ?(n-3)的波形。 2.求序列x(n)和h(n)的线性卷积y(n)=x(n)*h(n)。x(n) = {3,-3,7,0,-1,5,2} , h(n) = {2,3,0,-5,2,1}. 画出x(n),h(n),y(n)与n的离散序列图形 四.实验要求 1)画出信号x(n) = 1.5*?(n+1) - ?(n-3)的波形。 ①MATLAB程序如下: n3 = [-3:3]; x3 = [(n3+1)==0]; subplot(1,3,1); stem(n3,x3); n4 = [-3:3]; x4 = [(n4-3)==0]; subplot(1,3,2);stem(n4,x4); n5 = [-3:3];x5 = 1.5*x3 - x4; subplot(1,3,3);stem(n5,x5); ②理论计算: x(n)= ③程序运行结果: 图(1) 从图(1)左侧起第一幅图是信号?(n+1)的波形,第二幅图是信号?(n-3)的波形,最后一幅图是信号x(n) = 1.5*?(n+1) - ?(n-3)的波形。

数字信号处理实验(吴镇扬)答案-4

实验四 有限长单位脉冲响应滤波器设计 朱方方 0806020433 通信四班 (1) 设计一个线性相位FIR 高通滤波器,通带边界频率为0.6π,阻带边界频率为0.4π,阻 带衰减不小于40dB 。要求给出h(n)的解析式,并用MATLAB 绘出时域波形和幅频特性。 解: (1) 求数字边界频率: 0.6 , .c r ωπωπ== (2) 求理想滤波器的边界频率: 0.5n ωπ= (3) 求理想单位脉冲响应: []d s i n ()s i n [()] () ()1n n n n n n h n n παωαα παωα π?-- -≠??-=? ? -=?? (4) 选择窗函数。阻带最小衰减为-40dB ,因此选择海明窗(其阻带最小衰减为-44dB);滤 波器的过渡带宽为0.6π-0.4π=0.2π,因此 6.21 0.231 , 152 N N N ππα-=?=== (5) 求FIR 滤波器的单位脉冲响应h(n): []31d sin (15)sin[0.5(15)] 1cos ()15()()()15(15)1 15 n n n R n n h n w n h n n n ππππ?---????-? ?≠? ???==-???? ? ?=? 程序: clear; N=31; n=0:N-1; hd=(sin(pi*(n-15))-sin(0.5*pi*(n-15)))./(pi *(n-15)); hd(16)=0.5; win=hanning(N); h=win'.*hd; figure; stem(n,h); xlabel('n'); ylabel('h(n)'); grid; title('FIR 高通滤波单位脉冲响应h(n)'); [H,w]=freqz(h,1); H=20*log10(abs(H)); figure;3 plot(w/pi,H); axis([0 1 -100 10]); xlabel('\omega/\pi'); ylabel('幅度/dB'); grid; title('FIR 高通滤波器,hanning 窗,N=31');

数字信号处理实验报告要求

数字信号处理实验课程设计 题目:数字滤波器的设计与实现 一、课程设计目的 (1) 掌握用脉冲响应不变法和双线性变换法设计无限脉冲响应数字滤波器(IIR DF )的原理和方法; (2) 掌握用窗函数法和频率采样设计有限脉冲响应数字滤波器(FIR DF )的原理和方法; (3) 学会根据信号的频谱确定滤波器指标参数; (4) 学会调用MATLAB 信号处理工具箱中的滤波器设计函数设计IIR DF 和FIR DF 。 二、课程设计原理 已知一个连续时间信号())π2cos()π2sin(21t f t f t x +=,Hz 1001=f ,Hz 3002=f ,x (t )为两个单频信号叠加后的混合信号,其时域波形和幅频特性图如图1所示。由图可知,混合信号时域混叠,无法在时域进行分离,但是频域是分离的,可以通过设计合适的IIR DF 和FIR DF 将两个单频信号分离,形成两个单一频率信号。 -2-1 1 2 t/s x (t )(a)混合信号时域波 形 050100150200250 30035040045050000.5 1 f/Hz 幅度(b)混合信号幅频特性 图1混合信号x (t )及其频谱图 三、课程设计内容 设计低通滤波器和高通滤波器将两个单频信号分离。滤波器的通带截止频率和阻带截止频率通过观察x (t )的幅频特性图自行确定,设采样频率为Hz 1000=s f ,要求滤波器的通带最大衰减和阻带最小衰减分别为dB 50,dB 1s p ==αα。调用MATLAB 中的滤波器设计函数编写

程序设计低通滤波器和高通滤波器(其中,低通滤波器用脉冲响应不变法和双线性变换法两种方法设计,高通滤波器用窗函数法和频率采样法两种方法设计),并绘制滤波器的幅频特性图、经滤波分离后的信号时域波形图和幅频特性图,观察分离效果。 四、课程设计报告要求 课程设计报告应包含以下几个方面的内容: 1.课程设计目的 2.课程设计要求 3.课程设计过程(包括设计步骤、完整的程序及仿真图) 4.结果分析 5.心得体会、问题或者建议 6.参考文献

实验一 基于Matlab的数字信号处理基本

实验一 基于Matlab 的数字信号处理基本操作 一、 实验目的:学会运用MA TLAB 表示的常用离散时间信号;学会运用MA TLAB 实现离 散时间信号的基本运算。 二、 实验仪器:电脑一台,MATLAB6.5或更高级版本软件一套。 三、 实验内容: (一) 离散时间信号在MATLAB 中的表示 离散时间信号是指在离散时刻才有定义的信号,简称离散信号,或者序列。离散序列通常用)(n x 来表示,自变量必须是整数。 离散时间信号的波形绘制在MATLAB 中一般用stem 函数。stem 函数的基本用法和plot 函数一样,它绘制的波形图的每个样本点上有一个小圆圈,默认是空心的。如果要实心,需使用参数“fill ”、“filled ”,或者参数“.”。由于MATLAB 中矩阵元素的个数有限,所以MA TLAB 只能表示一定时间范围内有限长度的序列;而对于无限序列,也只能在一定时间范围内表示出来。类似于连续时间信号,离散时间信号也有一些典型的离散时间信号。 1. 单位取样序列 单位取样序列)(n δ,也称为单位冲激序列,定义为 ) 0() 0(0 1)(≠=?? ?=n n n δ 要注意,单位冲激序列不是单位冲激函数的简单离散抽样,它在n =0处是取确定的值1。在MATLAB 中,冲激序列可以通过编写以下的impDT .m 文件来实现,即 function y=impDT(n) y=(n==0); %当参数为0时冲激为1,否则为0 调用该函数时n 必须为整数或整数向量。 【实例1-1】 利用MATLAB 的impDT 函数绘出单位冲激序列的波形图。 解:MATLAB 源程序为 >>n=-3:3; >>x=impDT(n); >>stem(n,x,'fill'),xlabel('n'),grid on >>title('单位冲激序列') >>axis([-3 3 -0.1 1.1]) 程序运行结果如图1-1所示。 图1-1 单位冲激序列

数字信号处理课程规划报告

数字信号处理课程设计报告《应用Matlab对信号进行频谱分析及滤波》 专业: 班级: 姓名: 指导老师: 二0 0五年一月一日

目录 设计过程步骤() 2.1 语音信号的采集() 2.2 语音信号的频谱分析() 2.3 设计数字滤波器和画出其频谱响应() 2.4 用滤波器对信号进行滤波() 2.5滤波器分析后的语音信号的波形及频谱() ●心得和经验()

设计过程步骤 2.1 语音信号的采集 我们利用Windows下的录音机,录制了一段开枪发出的声音,时间在1 s内。接着在C盘保存为WAV格式,然后在Matlab软件平台下.利用函数wavread对语音信号进行采样,并记录下了采样频率和采样点数,在这里我们还通过函数sound引入听到采样后自己所录的一段声音。通过wavread函数和sound的使用,我们完成了本次课程设计的第一步。其程序如下: [x,fs,bite]=wavread('c:\alsndmgr.wav',[1000 20000]); sound(x,fs,bite); 2.2 语音信号的频谱分析 首先我们画出语音信号的时域波形;然后对语音信号进行频谱分析,在Matlab中,我们利用函数fft对信号进行快速傅里叶变换,得到信号的频谱特性性。到此,我们完成了课程实际的第二部。 其程序如下: n=1024; subplot(2,1,1); y=plot(x(50:n/4)); grid on ; title('时域信号') X=fft(x,256); subplot(2,1,2); plot(abs(fft(X))); grid on ; title('频域信号'); 运行程序得到的图形:

数字信处理上机实验答案全

数字信处理上机实验答 案全 Document number【SA80SAB-SAA9SYT-SAATC-SA6UT-SA18】

第十章 上机实验 数字信号处理是一门理论和实际密切结合的课程,为深入掌握课程内容,最好在学习理论的同时,做习题和上机实验。上机实验不仅可以帮助读者深入的理解和消化基本理论,而且能锻炼初学者的独立解决问题的能力。本章在第二版的基础上编写了六个实验,前五个实验属基础理论实验,第六个属应用综合实验。 实验一系统响应及系统稳定性。 实验二时域采样与频域采样。 实验三用FFT对信号作频谱分析。 实验四 IIR数字滤波器设计及软件实现。 实验五 FIR数字滤波器设计与软件实现 实验六应用实验——数字信号处理在双音多频拨号系统中的应用 任课教师根据教学进度,安排学生上机进行实验。建议自学的读者在学习完第一章后作实验一;在学习完第三、四章后作实验二和实验三;实验四IIR数字滤波器设计及软件实现在。学习完第六章进行;实验五在学习完第七章后进行。实验六综合实验在学习完第七章或者再后些进行;实验六为综合实验,在学习完本课程后再进行。 实验一: 系统响应及系统稳定性 1.实验目的 (1)掌握求系统响应的方法。 (2)掌握时域离散系统的时域特性。 (3)分析、观察及检验系统的稳定性。 2.实验原理与方法 在时域中,描写系统特性的方法是差分方程和单位脉冲响应,在频域可以用系统函数描述系统特性。已知输入信号可以由差分方程、单位脉冲响应或系统函数求出系统对于该输入信号的响应,本实验仅在时域求解。在计算机上适合用递推法求差分方程的解,最简单的方法是采用MATLAB语言的工具箱函数filter函数。也可以用MATLAB语言的工具箱函数conv函数计算输入信号和系统的单位脉冲响应的线性卷积,求出系统的响应。 系统的时域特性指的是系统的线性时不变性质、因果性和稳定性。重点分析实验系统的稳定性,包括观察系统的暂态响应和稳定响应。 系统的稳定性是指对任意有界的输入信号,系统都能得到有界的系统响应。或者系统的单位脉冲响应满足绝对可和的条件。系统的稳定性由其差分方程的系数决定。 实际中检查系统是否稳定,不可能检查系统对所有有界的输入信号,输出是否都是有界输出,或者检查系统的单位脉冲响应满足绝对可和的条件。可行的方法是在系统的输入端加入单位阶跃序列,如果系统的输出趋近一个常数(包括零),就可以断定系统是稳定的[19]。系统的稳态输出是指当∞ n时,系统的输出。如果系统稳定,信号加入 → 系统后,系统输出的开始一段称为暂态效应,随n的加大,幅度趋于稳定,达到稳态输出。 注意在以下实验中均假设系统的初始状态为零。 3.实验内容及步骤

数字信号处理实习报告

中国地质大学(武汉) 数字信号处理上机实习 学生姓名: 班级:071132 学号:2013100 指导老师:王晓莉

题目一 离散卷积计算 一、实验题目 设线性时不变(LTI )系统的冲激响应为h(n),输入序列为x(n) 1、h(n)=(0.8)n ,0≤n ≤4; x(n)=u(n)-u(n-4) 2、h(n)=(0.8)n u(n), x(n)=u(n)-u(n-4) 3、h(n)=(0.8)n u(n), x(n)=u(n) 求以上三种情况下系统的输出y(n),显示输入和输出波形。 二、实验目的 1.理解和掌握离散卷积计算; 2.学习如何用Mtalab 实现离散卷积计算。 三、算法设计 离散卷积定义为: ∑-∞ =-= n )()()(y k k n h k x n 1、n (0.8)=h(n),40≤≤n ,4)-u(n -u(n)=x(n), ∑∞ -∞ =-= *=m m n h m x n h n x n y )()()()()( (a) 当0

(b) 当30≤≤n 时,∑==n m n y 0 )((0.8)n ; (c) 当204≤≤n 时,∑ -== n 3)(n m n y (0.8)n ; (d) 当2321≤≤n 时,∑ -==20 3 )(n m n y (0.8)n ; (e) 当23>n 时,0)(=n y ; 3、)()8.0()(n u n h n =,)()(n u n x =,∑∞ -∞ =-= *=m m n h m x n h n x n y )()()()()( (a) 当0n 时,0)(=n y ; 四、程序分析 所用到的函数: (1)y=conv (x.,h ):卷积运算函数,计算)(*)()(n h n x n y =; (2)n1=0:4:n1取0~4; (3)subplot(m,n,p):subplot()函数是将多个图画到一个平面上的工具。其中,m 表示是图排成m 行,n 表示图排成n 列,也就是整个figure 中有n 个图是排成一行的,一共m 行,如果m=2就是表示2行图。p 表示图所在的位置,p=1表示从左到右从上到下的第一个位置。 (4)title(‘content ’):title()函数的功能是为当前坐标系添加标题“content ”。 五、程序设计 n=0:4; h=0.8.^n;

数字信号处理基础实验报告_

本科生实验报告 实验课程数字信号处理基础 学院名称地球物理学院 专业名称地球物理学 学生姓名 学生学号 指导教师王山山 实验地点5417 实验成绩 二〇一四年十一月二〇一四年十二月

填写说明 1、适用于本科生所有的实验报告(印制实验报告册除外); 2、专业填写为专业全称,有专业方向的用小括号标明; 3、格式要求: ①用A4纸双面打印(封面双面打印)或在A4大小纸上用蓝黑色水笔书写。 ②打印排版:正文用宋体小四号,1.5倍行距,页边距采取默认形式(上下2.54cm, 左右2.54cm,页眉1.5cm,页脚1.75cm)。字符间距为默认值(缩放100%,间距:标准);页码用小五号字底端居中。 ③具体要求: 题目(二号黑体居中); 摘要(“摘要”二字用小二号黑体居中,隔行书写摘要的文字部分,小4号宋体); 关键词(隔行顶格书写“关键词”三字,提炼3-5个关键词,用分号隔开,小4号黑体); 正文部分采用三级标题; 第1章××(小二号黑体居中,段前0.5行) 1.1 ×××××小三号黑体×××××(段前、段后0.5行) 1.1.1小四号黑体(段前、段后0.5行) 参考文献(黑体小二号居中,段前0.5行),参考文献用五号宋体,参照《参考文献著录规则(GB/T 7714-2005)》。

实验一生成离散信号并计算其振幅谱 并将信号进行奇偶分解 一、实验原理 单位脉冲响应h(t)=exp(-a*t*t)*sin(2*3.14*f*t)进行离散抽样,分别得到t=0.002s,0.009s,0.011s采样的结果。用Excel软件绘图显示计算结果。并将信号进行奇偶分解,分别得到奇对称信号h(n)-h(-n)与偶对称信号h(n)+h(-n)。用Excel 软件绘图显示计算结果。 二、实验程序代码 (1)离散抽样 double a,t; a=2*f*f*log(m); int i; for(i=0;i

相关文档
最新文档