搜索
您的当前位置:首页正文

DSP matlab实验三

来源:六九路网
 实验三:IIR 数字滤波器的设计和实现 学院: 专业: 班级: 姓名: 学号: 班内序号: 时间: 【实验背景】

数字信号处理的另一个重要应用是数字滤波器。数字滤波器是一个运算过程,将输入数列按既定的要求转换成输出数列。在数字信号的处理时只需利用数字相加、乘以常数和延时等运算,就可以完全达到传输特性的要求。数字滤波器分为无限冲激响应(IIR)和有限冲激响应(FIR)两大类。

本实验用 IIR 数字滤波器产生双音多频 DTMF 拨号信号的产生,演示 IIR 数字滤波器在通信系统中的应用。

DTMF 信号是将拨号盘上的 0~F 共16 个数字,用音频范围的 8 个频率来表示的一种编码方式。8 个频率分为高频群和低频群两组,分别作为列频和行频。每个字符的信号由来自列频和行频的两个频率的正弦信号叠加而成。频率组合方式如下图所示。

1209Hz 1336Hz 1477Hz 1633Hz 频率 697Hz 1 2 3 A 770Hz 4 5 6 B 852Hz 7 8 9 C 941Hz */E 0 #F D

【实验要求】

根据 ITU Q.23 建议,DTMF信号的技术指标是:传送/接收率为每秒10个号码,或每个号码100ms。每个号码传送过程中,信号存在时间至少45ms,且不多于55ms,100ms的其余时间是静音。在每个频率点上允许有不超过±1.5%的频率误差。任何超过给定频率 ±3.5%的信号,均被认为是无效的,拒绝承认接收。另

外,在最坏的检测条件下,信噪比不得低于15dB。 DTMF 信号的编码: 把您的联系电话号码 DTMF 编码生成为一个 .wav 文件。其中关键是不同频率的正弦波的产生,要求采用滤波法生成所要求的 DTMF信号。 【实验内容】

1.实验代码:

phone=input('请输入电话号码:','s'); >> sum=length(phone); fs=8000;total_x=[];

fH=[1336,1209,1336,1477,1209,1336,1477,1209,1336,1477]; fL=[941,697,697,697,770,770,770,852,852,852]; for i=1:sum

num=phone(i)-48+1;n=1:400;

x=sin(2*pi*n*fL(num)/fs)+sin(2*pi*n*fH(num)/fs); x=[x,zeros(1,400)]; total_x=[total_x,x];end

audiowrite('num_sound.wav',total_x,8000) 警告: 数据在写入文件期间被裁剪。

> In audiowrite>clipInputData (line 396) In audiowrite (line 176) >> sound(total_x);

>> plot(total_x);axis([0,10000,-2,2]);title('时域波形') >> k=[18,20,22,25,32,35,38];N=210;

>> tm=[49,50,51;52,53,54;55,56,57;0,48,0]; >> for i=1:sum j=800*(i-1);

X=goertzel(total_x(j+1:j+N),k+1); value=abs(X); figure(2)

subplot(2,6,i);

stem(k,value,'.','r'); title('FFT x(n)');

xlabel('k');ylabel('|X(k)|');limit=20; for i1=5:7

if value(i1)>limit break; end end

for j1=1:4

if value(j1)>limit break;end end

buffer(i)=tm(j1,i1-4);end j =0 j =800 j =1600 j =2400

j =3200 j =4000 j =4800 j =5600 j =6400 j = 7200 j = 8000

>> disp(['接收端检测到的号码']) 接收端检测到的号码

>> disp(setstr(buffer)) 为:

【参考资料】 《数字信号处理》

《数字信号处理及其matlab实现》 《离散时间信号处理》

因篇幅问题不能全部显示,请点此查看更多更全内容

Top