题目十一: 数字音频回声系统的处理实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

通信系统工程应用训练实验报告题目:数字音频回声系统的处理

专业:通信工程

姓名: 吕迪

学号:13024219

指导教师:孙恩昌

完成日期:2016年6月6日

一、实验目的

(1)加深对IIR滤波器基本原理的理解;

(2)学习利用IIR滤波器的C语言程序;

(3)了解数字音频回声处理的方法,提高分析和解决问题的能力。

二、实验内容

下面是一个对实际效果模拟的组合方案,如图3所示。其中左面的子系统是延迟相加模块,滤波器参数分别为

1)α=0.75,b=1,R=29

2)α=0.75,b=0.9,R=37

3)α=0.75,b=0.8,R=44

4)α=0.75,b=0.7,R=50

右面的子系统是第二个延迟相加模块,参数为

1)α=0.75,R=27

2)α=0.75,R=31

输入一个脉冲信号,观察输出信号的波形(脉冲响应)。

图3 数字音频回声系统模拟

三、实验思路及流程图

四、实验结果

单位冲击响应时延29滤波后图形

单位冲击响应时延37滤波后图形

单位冲击响应时延44滤波后图形

单位冲击响应时延55滤波后图形

滤波后求和后图形

求和后时延27滤波后图形

再次时延31滤波后图形

DFT变换后频谱图

五、实验程序

#include "stdafx.h"

#include"D:\x_math.cpp"

#include"D:\x_graph.cpp"

void Filter1(int t,double x[]); //延迟相加模块一

void Filter2(double a,double b,double x[],int c0); //延迟相加模块二

void Filter3(double a,double b,double x[]); //延迟相加模块三

void plotgri2test(COLORREF gridcolor,COMPLEX p[],int N); //二维绘图函数

double a[60];

double b[60];

double c[60];

double d[60];

int main(int argc, char* argv[])

{

int i;

double x1[60];

COMPLEX X2[60],X3[60];

FILE *txtfile1;

FILE *txtfile2;

FILE *txtfile3;

FILE *txtfile4;

FILE *txtfile5;

FILE *txtfile6;

FILE *txtfile7;

x1[0]=1; //在零时刻提供一个脉冲

for(i=1;i<60;i++)x1[i]=0;

for(i=0;i<60;i++)a[i]=0;

window2("IIR数字滤波器-29",-2,3,70,-1,"t","f(t)");

HPEN pen1=CreatePen(PS_SOLID,5,BLACK),oldpen=(HPEN)SelectObject(win2.hdc,pen1);//创建画笔

HPEN pen2=CreatePen(PS_SOLID,1,RED);

HPEN pen3=CreatePen(PS_SOLID,5,BLUE);

xy2(GREEN);//画xy轴。

Filter1(29,x1);

SelectObject(win2.hdc,pen3);

for(int n=0;n<60;n++)

{

line2(n,0,n,a[n]);

}

SelectObject(win2.hdc,pen2);

for( n=0;n<60;n++)

{

line2(n,0,n,x1[n]);

}

getch();//等待

for(i=0;i<60;i++){

b[i]=a[i];

} //将结果存进数组b,进行求和

txtfile1=fopen("1.txt","w");

for(n=0;n<60;n++){

fprintf(txtfile1,"%lf,",a[n]);

}//将滤波结果存至txt文档

fclose(txtfile1);

frame2(win2.xstr,win2.ystr);//清除用户绘图区域,重画边框window2("IIR数字滤波器-37",-2,3,70,-1,"t","f(t)");

xy2(GREEN);//画xy轴。

Filter1(37,x1);

SelectObject(win2.hdc,pen3);

for( n=0;n<60;n++)

{

line2(n,0,n,a[n]);

}

SelectObject(win2.hdc,pen2);

for( n=0;n<60;n++)

{

line2(n,0,n,x1[n]);

}

getch();//等待

for(i=0;i<60;i++){

b[i]=b[i]+0.9*a[i];

}//进行求和

txtfile2=fopen("2.txt","w");

for(n=0;n<60;n++){

fprintf(txtfile2,"%lf,",a[n]);

}//将滤波结果存至txt文档

fclose(txtfile2);

frame2(win2.xstr,win2.ystr);//清除用户绘图区域,重画边框

相关文档
最新文档