DTMF双音多频系统信号输入和检测识别算法matlab仿真

这篇具有很好参考价值的文章主要介绍了DTMF双音多频系统信号输入和检测识别算法matlab仿真。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、理论基础

二、核心程序

三、仿真结论


一、理论基础

       双音多频(Dual Tone Multi Frequency, DTMF)信号是音频电话中的拨号信号,由美国AT&T贝尔公司实验室研制,并用于电话网络中。这种信号制式具有很高的拨号速度,且容易自动检测识别,很快就代替了原有的用脉冲计数方式的拨号制式。这种双音多频信号制式不仅用在电话网络中,还可以用于传输十进制数据的其他通信系统中,用于电子邮件和银行系统中。这些系统中用户可以用电话发送DTMF信号选择语音菜单进行操作。DTMF信号系统是一个典型的小型信号处理系统,它要用数字方法产生模拟信号并进行传输,其中还用到了D/A变换器;在接收端用A/D变换器将其转换成数字信号,并进行数字信号处理。

1 双音多频(DTMF)信号

     过去的电话拨号时靠脉冲计数确定0~9这10个数字的,拨号速度慢,也不能扩展电话上网其他服务功能。现在均采用双音拨号。每一位号码由两个不同的单音频组成,所有的频率可分成高频带和低频带两组。每一位号码由一个高频信号和一个低频信号叠加形成,DTMF信号有16个编码。一般情况下,声音信号很难造成对DTMF接收器的错误触发。

电话中的双音多频信号有两个作用:用拨号信号去控制交换机接通被叫的用户电话机;控制电话机的各种动作,如播放留言、语音信箱等。

2 双音多频(DTMF)信号的产生

     DTMF编码器基于两个二阶数字正弦波振荡器,一个用于产生行频,一个用于产生列频。典型的DTMF信号频率范围是700~1700Hz,选取8000Hz作为采样频率,DTMF双音频信号由两个二阶数字正弦振荡器产生,一个用来产生行音频信号,另一个产生列音频信号。在电话键盘上的每次按键,会产生式(2.2-1)表示的两个音调之和。规定用8KHz对DTMF信号进行采样,采样后得到时域离散信号为

dtmf双音多频信号的检测,MATLAB,板块1:通信与信号处理,matlab,DTMF,双音多频系统,信号输入和检测识别

两个频率f1,f2唯一确定了被按压的键。具体数字对应的两个频率如表2.2.1所示。

dtmf双音多频信号的检测,MATLAB,板块1:通信与信号处理,matlab,DTMF,双音多频系统,信号输入和检测识别

     形成上面序列的方法有两种,即计算法和查表法。用计算法求正弦波的序列值容易,但实际中要占用一些计算时间,影响运行速度。查表法是预先将正弦波的各序列值计算出来,寄存在存储器中,运行时只要按顺序和一定的速度取出便可。这种方法要占用一定的存储空间,但是速度快。

      因为采样频率是8000Hz,因此要求每125ms输出一个样本,得到的序列再送到D/A变换器和平滑滤波器,输出便是连续时间的DTMF信号。DTMF信号通过电话线路送到交换机。

       在接收端,要对收到的将收到的双音多频信号进行检测,即检测两个正弦波的频率,以判断其对应的十进制数字或者符号。用数字方法进行检测,需要将接收到的模拟音频信号进行A/D变换,恢复为数字信号,然后检测其中的音频频谱来确定所发送的数字。检测方法有两种,一种是用一组滤波器来提取所需频率,判断对应的数字或符号;另一种是用快速傅立叶变换(FFT)算法的DFT对双音多频信号进行频谱分析,有信号的幅度谱,判断信号的两个频率,最后确定对应的数字或符号。以下章节对两种方法进行分析并对Goertzel算法进行详细的推导。 

    由上面可以知道一个DTMF信号是由两个不通频率f1f2的正弦波组成,它可以用下式表示

dtmf双音多频信号的检测,MATLAB,板块1:通信与信号处理,matlab,DTMF,双音多频系统,信号输入和检测识别

       我们可以考虑通过离散傅立叶变换进行信号的频谱分析来检测离散的双音多频码。这是因为只有时域及频域都是离散的情况下,才能适合于在计算机上运算;也就是周期的离散时间信号与离散频率间的变换对。

       用DFT检测模拟DTMF信号所含有的两个音频频率,即为用DFT对模拟信号进行频谱分析的问题,要确定三个参数:采样频率Fs,DTF的变换点数N,需要对时间的观察长度Tp。

1 频谱分析的分辨率

        观察表2-1要检测的8个频率,相邻间隔最小的是第一个和第二个频率,间隔是73Hz,要求DFT至少能够分辨相隔73Hz的两个信号,即要求Fmin=73Hz。DFT的分辨率和对信号的观察时间Tp有关,Tpmin=1/F=1/73=13.7ms。考虑到可靠性,应留有富余量,要求按键的时间在40ms以上。

2 频谱分析的频率范围

      要检测信号的频率范为697~1633Hz,但考虑存在语音干扰,除了检测这8个频率外,还要检测它们的二次倍频的幅度大小。波形正常且干扰小的正弦波的二次倍频是很小的。如果发现二次谐波很大,则认为不是DTMF信号。这样频谱分析的范围为697~3266Hz。按照采样定理,信号的最高频率不能超过折叠频率,即0.5Fs≥3266Hz,由此要求最小采样频率应为6.53KHz。总系统已经规定Fs=8KHz,因此一定满足对频谱分析的要求。按照Tpmin=13.7ms,Fs=8KHz,算出对信号最少的采样点数为Nmin=Tpmin*Fs≈110。

dtmf双音多频信号的检测,MATLAB,板块1:通信与信号处理,matlab,DTMF,双音多频系统,信号输入和检测识别

二、核心程序

clear all;clc;
tm=[1,2,3,65;4,5,6,66;7,8,9,67;42,0,35,68];   % DTMF信号代表的16个数
N=205;K=[18,20,22,24,31,34,38,42];	%8个基频对应的8个k值
f1=[697,770,852,941];                   % 行频率向量
f2=[1209,1336,1477,1633];               % 列频率向量
TN=input('键入8位电话号码= ');          % 输入8位数字
TNr=0;                                  %接收端电话号码初值为零
for l=1:8;	               %分别对每位号码数字处理:产生信号,发声,检测
    d=fix(TN/10^(8-l));	                  %计算出第l位号码数字
    TN=TN-d*10^(8-l);
    for p=1:4;
        for q=1:4;
            if tm(p,q)==abs(d); break,end     % 检测与l位号码相符的列号q
        end
if tm(p,q)==abs(d); break,end     % 检测与l位号码相符的行号p
    end
    n=0:1023;                               % 为了发声,加长序列
    x = sin(2*pi*n*f1(p)/8000) + sin(2*pi*n*f2(q)/8000);% 构成双音频信号
    sound(x,8000);                               % 发出声音
    pause(0.1)                            %相邻信号响声之间加0.1秒停顿
    % 接收检测端的程序
    X=goertzel(x(1:N),K+1);            % 用Goertzel算法计算8点DFT样本
    val = abs(X);                           % 列出八点DFT的摸
    subplot(4,2,l);	
    stem(K,val,'.');grid;xlabel('k');ylabel('|X(k)|') % 画出8点DFT(k)的幅度
    axis([10 50 0 120])
    limit = 80;                           %基频检测门限为80
    for s=5:8;
        if val(s) > limit, break, end       % 查找列号
    end
    for r=1:4;
        if val(r) > limit, break, end       % 查找行号
end
18
    TNr=TNr+tm(r,s-4)*10^(8-l);	   %将8位号码表示成一个8位数,以便显示
end
disp('接收端检测到的号码为:')         % 显示接收到的8位电话号码
disp(TNr)

三、仿真结论

dtmf双音多频信号的检测,MATLAB,板块1:通信与信号处理,matlab,DTMF,双音多频系统,信号输入和检测识别

 文章来源地址https://www.toymoban.com/news/detail-533344.html

到了这里,关于DTMF双音多频系统信号输入和检测识别算法matlab仿真的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【信号处理】基于CNN自编码器的心电信号异常检测识别(tensorflow)

    本项目主要实现卷积自编码器对于异常心电ECG信号的检测和识别,属于无监督学习中的生理信号检测的典型方法之一。   读取心电信号 信号可视化    信号均值计算及可视化  训练/测试数据划分 搭建自编码器 模型训练 训练可视化   信号重建可视化 计算重建MAE误差  异常

    2024年04月23日
    浏览(42)
  • 毕业设计选题-基于深度学习的车道线检测算法识别系统 人工智能 机器学习 卷积神经网络

    目录 前言 课题背景和意义 实现技术思路 一、车道线检测方法 1.1 卷积神经网络 1.2 注意力机制 二、 数据集 三、实验及结果分析 3.1 实验环境搭建 3.2 模型训练 实现效果图样例 最后     📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学

    2024年02月22日
    浏览(79)
  • 毕业设计-基于深度学习玉米叶病虫害识别系统 YOLO python 机器学习 目标检测 人工智能 算法

    目录 前言 设计思路 一、课题背景与意义 二、算法理论原理 2.1 卷积神经网络 2.2 YOLOv5算法 三、检测的实现 3.1 数据集 3.2 实验环境搭建 3.3 实验及结果分析 实现效果图样例 最后        📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准

    2024年02月03日
    浏览(136)
  • AI:05- - 基于深度学习的道路交通信号灯的检测与识别

    🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌本专栏包含以下学习方向: 机器学习、

    2024年02月03日
    浏览(48)
  • 基于matlab的高精度信号峰值检测算法

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB        峰值检验是示波表中数据采集方式之一, 这种技术起源于存储深度不能满足捕获毛刺的需要。如果用模拟示波器去观察, 只有当毛刺信号是重复性的并且和主信号同步时, 才能看到毛刺信号 。由于毛刺源于其

    2024年02月12日
    浏览(53)
  • 基于信号功率谱特征和GRNN广义回归神经网络的信号调制类型识别算法matlab仿真

    目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 MATLAB2022a         本课题,我们主要对MPSK和MFSK调制类型进行识别。在进行信号调制方式区分之前,首先需要对PSK和FSK进行区分,提出了一种基于信号功率谱的PSK和FSK调制方式

    2024年02月05日
    浏览(42)
  • 基于CNN卷积神经网络的语音信号识别算法matlab仿真

    目录 1.算法仿真效果 2.MATLAB核心程序 3.算法涉及理论知识概要 4.完整MATLAB matlab2022a仿真结果如下:        人工智能的应用中,语音识别在今年来取得显著进步,不管是英文、中文或者其他语种,机器的语音识别准确率在不断上升。其中,语音听写技术的发展最为迅速,目前

    2024年02月04日
    浏览(43)
  • 工服穿戴检测算法 工装穿戴识别算法

    工服穿戴检测算法 工装穿戴识别算法利用yolo网络模型图像识别技术,工服穿戴检测算法 工装穿戴识别算法可以准确地识别现场人员是否穿戴了正确的工装,包括工作服、安全帽等。一旦检测到未穿戴的情况,将立即发出警报并提示相关人员进行整改。Yolo意思是You Only Look

    2024年02月10日
    浏览(36)
  • 基于FPGA的信号处理算法,FFT法相差检测verilog实现

    基于FPGA的信号处理算法,FFT法相差检测verilog实现 。 1.硬件平台:altera芯片 2.软件平台:Quartusii 13.1 Verilog 3.实现功能:检测两路正弦波的相位差 基于FPGA的信号处理算法,FFT法相差检测verilog实现 引言 在现代通信系统中,信号处理算法在实时性和精度方面面临着巨大的挑战。

    2024年04月16日
    浏览(60)
  • 液体泄露识别检测算法 监控识别管道液体泄漏

    液体泄露识别检测算法通过 yolov8+python网络模型技术,液体泄露识别检测算法对管道的液体泄露情况进行全天候不间断实时监测,检测到画面中管道设备液体泄露现象时,将自动发出警报提示相关人员及时采取措施。YOLOv8 算法的核心特性和改动可以归结为如下:提供了一个全

    2024年02月10日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包