数字信号处理综合实验——Matlab实现DTMF信号的产生与提取

数字信号处理综合实验:

一、实验内容及要求
实验内容:
综合运用课程所学相关知识,根据实际信号的频谱特性,确定数字滤波器设计技术指标,设计相应的数字滤波器,实现DTMF信号的提取。
设计要求:
(1)通过查阅资料,自学电话中DTMF信号的产生与检测方法。
(2)利用Matlab实现DTMF信号的产生与提取。
自行选择数字(0-9),通过数字方法产生该数字的双频信号;拟定采样频率为8000Hz。根据该信号的频率特性,确定滤波器类型及技术指标,将两个单音分别提取出来。画出数字滤波器输入、输出信号的波形及频谱。
(3)利用Matlab GUI设计用户界面,实现拨号界面,包括10个数字键、显示框(显示按下的数字),画出相应的波形。
(4)自拟实验方案及具体实验步骤(要求写出设计方案)。
创新训练拓展内容:
(1)在GUI用户界面中,除设计要求(3)中的内容外,可增加滤波器部分,即实现设计要求(2)中的内容。
(2)利用Labview软件进行DTMF信号的产生与提取。要求给出系统前面板结构、 程序框图等,记录仿真结果。
(3)利用Simulink进行DTMF信号的产生与提取。要求给出系统仿真图,记录系统的各个输出点的波形。
二、实验步骤、结果与分析
1.通过查阅资料,自学电话中DTMF信号的产生与检测方法。利用Matlab实现DTMF信号的产生与提取。自行选择数字(0-9),通过数字方法产生该数字的双频信号;拟定采样频率为8000Hz。根据该信号的频率特性,确定滤波器类型及技术指标,将两个单音分别提取出来。画出数字滤波器输入、输出信号的波形及频谱。

1.通过查阅资料,自学电话中DTMF信号的产生与检测方法。利用Matlab实现DTMF信号的产生与提取。自行选择数字(0-9),通过数字方法产生该数字的双频信号;拟定采样频率为8000Hz。根据该信号的频率特性,确定滤波器类型及技术指标,将两个单音分别提取出来。画出数字滤波器输入、输出信号的波形及频谱。
在这里插入图片描述
以数字5为例。

clc;
clear;
n=0:1023;
x=sin(2*pi*n*770/8000)+sin(2*pi*n*1336/8000);%产生DTMF信号
soundsc(x,8000);
subplot(3,2,1)
plot(n,x);
title('DTMF信号')
axis([0,100,-2,2]);
k=512;
X=fft(x,k);
subplot(3,2,2)
plot(abs(X));
title('DTMF信号频谱')
%利用带通滤波器滤出低频分量
fpl=700;fpu=800;
fsl=550;fsu=850;
Fs=8000;
wp=[2*fpl/Fs,2*fpu/Fs];
ws=[2*fsl/Fs,2*fsu/Fs];
rp=1;rs=40;
[N,wpo]=ellipord(wp,ws,rp,rs);
[B,A]=ellip(N,rp,rs,wpo);
y=filter(B,A,x);
soundsc(y,8000);
subplot(3,2,3)
plot(y);
axis([50,100,-1,1]);
title('DTMF信号低频分量')
Y=fft(y,k);
subplot(3,2,4)
plot(abs(Y));
title(' DTMF信号低频分量频谱')
%利用带通滤波器滤出高频分量
fpl1=1200;fpu1=1400;
fsl1=1100;fsu1=1500;
Fs=8000;
wp1=[2*fpl1/Fs,2*fpu1/Fs];
ws1=[2*fsl1/Fs,2*fsu1/Fs];
rp=1;rs=40;
[N1,wpo1]=ellipord(wp1,ws1,rp,rs);
[B1,A1]=ellip(N1,rp,rs,wpo1);
y1=filter(B1,A1,x);
soundsc(y1,8000);
subplot(3,2,5)
plot(y1);
title(' DTMF信号高频分量')
axis([50,100,-1,1]);
Y1=fft(y1,k);
subplot(3,2,6)
plot(abs(Y1));
title(' DTMF信号高频分量频谱')

在这里插入图片描述
2.利用Matlab GUI设计用户界面,实现拨号界面,包括10个数字键、显示框(显示按下的数字),画出相应的波形。
设计的GUI界面:
在这里插入图片描述
其中有十二个按键,运行时,每按一个键,右侧框图中都会出现相应的波形,每个按键都有自己独立的程序,下面是按键“2”的gui程序:

function pushbutton2_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
n=0:1023;
x=sin(2*pi*n*697/8000)+sin(2*pi*n*1336/8000);
sound(x,8000);
set(handles.edit1,'String',2);
axes(handles.axes1);
plot(x);
axis([0 200 -2 2]);
k=512;
X=fft(x,k);
plot(handles.axes2,abs(X));
sound(x,8000);
%滤出低频分量
fpl=500;fpu=750;
fsl=300;fsu=900;
Fs=8000;
wp=[2*fpl/Fs,2*fpu/Fs];
ws=[2*fsl/Fs,2*fsu/Fs];
rp=1;rs=40;
[N,wpo]=ellipord(wp,ws,rp,rs);
[B,A]=ellip(N,rp,rs,wpo);
y=filter(B,A,x);
soundsc(y,8000);
axes(handles.axes3);
plot(y);
axis([0 200 -2 2]);
Y=fft(y,k);
plot(handles.axes4,abs(Y));
%滤出高频分量
fpl1=1200;fpu1=1400;
fsl1=900;fsu1=1600;
Fs=8000;
wp1=[2*fpl1/Fs,2*fpu1/Fs];
ws1=[2*fsl1/Fs,2*fsu1/Fs];
rp=1;rs=40;
[N1,wpo1]=ellipord(wp1,ws1,rp,rs);
[B1,A1]=ellip(N1,rp,rs,wpo1);
y1=filter(B1,A1,x);
soundsc(y1,8000);
axes(handles.axes5);
plot(y1);
axis([0 200 -2 2]);
Y1=fft(y1,k);
plot(handles.axes6,abs(Y1));

结果图:
在这里插入图片描述
3.利用Simulink进行DTMF信号的提取。要求给出系统仿真图,记录系统各个输出点的波形

系统仿真图:
在这里插入图片描述
滤波器设计
滤波器设计
4.利用Labview软件进行DTMF信号的产生与提取。要求给出系统前面板结构、 程序框图等,记录仿真结果。
LABVIEW前面板布局(以1为例):
在这里插入图片描述
程序框图
在这里插入图片描述
滤除低频成分
在这里插入图片描述
滤除高频

在这里插入图片描述

  • 16
    点赞
  • 156
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值