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

2023-11-03

数字信号处理综合实验:

一、实验内容及要求
实验内容:
综合运用课程所学相关知识,根据实际信号的频谱特性,确定数字滤波器设计技术指标,设计相应的数字滤波器,实现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为例):
在这里插入图片描述
程序框图
在这里插入图片描述
滤除低频成分
在这里插入图片描述
滤除高频

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • MATLAB 在 MATLAB 7.10.0 学生版中似乎找不到 csaps()

    我有一些代码使用csaps Matlab的三次平滑样条拟合函数 http www mathworks com help toolbox curvefit csaps html我想将其提供给使用 MATLAB 7 10 0 R2010a 的学
  • 如何将Matlab代码库与Android集成?

    我有一个算法和 MATLAB 中的一些其他代码 我想在我的 Android 应用程序中使用它 我怎样才能做到这一点 我可以从 MATLAB 制作 jar 文件以便与 Android 一起使用吗 我必须做点别的事吗 如果您还有其他产品 适用于
  • matlab矩阵中求子矩阵的通用方法

    我正在寻找一种 好 方法来在更大的矩阵 任意维数 中找到矩阵 模式 Example total rand 3 4 5 sub total 2 3 1 3 3 4 现在我希望这样的事情发生 loc matrixFind total sub 在
  • 将 3d 矩阵重塑为 2d 矩阵

    我有一个 3d 矩阵 n by m by t 在 MATLAB 中表示n by m一段时间内网格中的测量值 我想要一个二维矩阵 其中空间信息消失了 只有n m随着时间的推移测量t剩下 即 n m by t 我怎样才能做到这一点 你需要命令r
  • 类方法的自定义代码完成?

    在 MATLAB 中 可以定义代码建议和完成 如标题为 的文档页面中所述 自定义代码建议和完成 https www mathworks com help matlab matlab prog customize code suggestio
  • 傅里叶变换定理 matlab

    我目前正在尝试理解二维傅里叶位移定理 根据我到目前为止所了解到的情况 图像空间中的平移会导致相位差异 但不会导致频率空间中的幅度差异 我试图用一个小例子来演示这一点 但它只适用于行的移位 而不适用于列的移位 这是一个小演示 我只在这里显示幅
  • 同时重新排序和旋转图像的高效方法

    为了快速加载 jpeg 我为turbojpeg 实现了一个 mex wrapper 以有效地将 大 jpeg 读入 MATLAB 对于 4000x3000px 的图像 实际解码只需要大约 120 毫秒 而不是 5 毫秒 然而 像素顺序是 R
  • 定义自定义 Mupad 程序的一般相对搜索路径

    假设我有一个 mupad 笔记本myMupadNotebook mn在路径上 C projectFolder ABC abc 它调用程序MyMupadProcedure mu它位于 C DEF GHI 现在我有一个 Matlab 脚本mai
  • 为什么 MATLAB 在打印大量 (.png) 图形时速度会变慢?

    我正在将大量数字打印为 png 文件 每个图都是数据矩阵中的一列图 我获取 png 文件并将它们串在一起形成动画 我的问题是 前几百张图像打印得很快 但创建每个新图形的时间却迅速增加 从前几百个 png 文件的约 0 2 秒到第 800 个
  • 如何每次使用按钮将数据添加到 MATLAB 中的现有 XLSX 文件?

    我有一个函数可以生成一些变量 例如分数 对 错 未回答 使用按钮调用此功能 问题是如何每次将函数生成的这些值添加 附加到 XLSX 文件中 或者 如何创建 MAT 文件以便可以添加它 可能的解决方案是什么 附加到 xls 文件所涉及的挑战是
  • MATLAB - GUI 和 OPC 服务器

    我想在 MATLAB 中设计一个图形用户界面 可以使用 MATLAB 的过程控制对象链接和嵌入 OPC 工具箱连续读取数据 我怎样才能实现这个 我已经设计了图形用户界面 但我无法将数据读入图形用户界面 就这样做 type opctoolMA
  • 垂直子图的单一颜色条

    我想让下面的 MATLAB 图有一个沿着两个子图延伸的颜色条 像这样的事情 使用图形编辑器手动完成 Note 这与提出的问题不同here https stackoverflow com questions 39950229 matlab t
  • 检查图像中是否有太薄的区域

    我正在尝试验证雕刻机的黑白图像 更多的是剪贴画图像 不是照片 我需要考虑的主要事情之一是区域的大小 或线条的宽度 因为机器无法处理太细的线条 所以我需要找到比给定阈值更细的区域 以此图为例 竖琴的琴弦可能太细而无法雕刻 我正在阅读有关 Ma
  • MATLAB 可执行文件太慢

    我使用以下命令将 MATLAB 程序转换为基于控制台的应用程序deploytool在 MATLAB 中 MATLAB m文件执行大约需要 2 秒 但在我将其转换为可执行文件并调用 exe 执行需要45秒 太长了 我想将 MATLAB 程序与
  • matlab部署工具到java包javac错误

    我正在尝试将我的程序包装为与 java 一起使用 我首先尝试了一个简单的 hello world 你好世界 m disp 你好世界 我使用了deploytool并选择了java包 当它到达这一行时 执行命令 javac verbose cl
  • 在 Matlab 的命令窗口中获取旧式帮助

    问题的简短版本 在最新版本的 Matlab 中 我在 Windows 上的 R2014b 和 R2015a 中看到过 当您键入help foo你得到一个简要描述 简介函数及其签名 例如 输入help bsxfun产生类似这样的东西 只有更好
  • 在Matlab中对字符进行分组并形成矩阵

    我有 26 个字符 A 到 Z 我将 4 个字符组合在一起 并用空格分隔以下 4 个字符 如下所示 abcd efgh ijkl mnop qrst uvwx yz 我的Matlab编码如下 str abcdefghijklmnopqrst
  • 在 matlab 代码中使用 dll 文件

    我需要使用 Matlab 中由 dll 文件定义的函数 我有一个例子 那个家伙将 dll 转换为 mexw32 文件 但我知道我是如何做到这一点的 我尝试使用加载库但它没有创建任何文件 我怎样才能做到这一点 loadlibrary http
  • 如何在Matlab中打印带有千位分隔符的整数?

    我想使用逗号作为千位分隔符将数字转换为字符串 就像是 x 120501231 21 str sprintf 0 0f x 但随着效果 str 120 501 231 21 如果内置fprintf sprintf做不到 我想可以使用正则表达式
  • 以 2 为底的矩阵对数

    Logm 取矩阵对数 并且log2 取矩阵每个元素以 2 为底的对数 我正在尝试计算冯 诺依曼熵 它涉及以 2 为底的矩阵对数 我该怎么做呢 如果将 以 2 为底 的矩阵指数定义为B expm log 2 A 或者如果您类似地通过特征分解直

随机推荐

  • 计算机键盘正确指法,键盘指法,详细教您盲打及快速打字指法练习的步骤

    有些人在用电脑打字的时候 会打的特别快 最快的时候能够一分钟打上八九十个字 而这样的打字速度也是靠平时的练就打字功力得来的 那么键盘指法打字如何才能将字打的准备又快呢 别着急 小编现在就来给你们普及一下这方面的知识 学会正确的键盘指法打字
  • 1.2 编程语言选择

    1 2 编程语言和城市选择 商业网站开发课 编程语言选择 后端开发语言 特点 排名网站 https hellogithub com report tiobe 薪资 参考2022年智联招聘 深圳初级和中级薪资 通用技能 操作系统 Linux
  • 在网络安全解决方案中使用数据挖掘技术

    网络安全 英语 network security 包含网络设备安全 网络信息安全 网络软件安全 黑客通过基于网络的入侵来达到窃取敏感信息的目的 也有人以基于网络的攻击见长 被人收买通过网络来攻击商业竞争对手企业 造成网络企业无法正常营运 网
  • 【ChatGPT实战案例】Excel代码太多记不住怎么办?ChatGPT来帮你高效解决问题

    目录 适合人群 使用工具 制作步骤 示例1 Excel数据分列 示例2 Excel数据提取 适合人群 会Excel基本操作 但是不懂Excel公式编写的人 使用工具 内容生产工具 如ChatGPT 讯飞星火认知模型 文心一言等 EXCEL文
  • LeetCode1748. 唯一元素的和(python)

    题目 给你一个整数数组 nums 数组中唯一元素是那些只出现 恰好一次 的元素 请你返回 nums 中唯一元素的 和 示例 1 输入 nums 1 2 3 2 输出 4 解释 唯一元素为 1 3 和为 4 示例 2 输入 nums 1 1
  • VCF变异文件读取和详细

    下载了千人基因组variants数据 是 vcf gz和 vcf gz tbi文件格式 需要在linux上打开 此时我还是一个生信小菜鸡 记录一下vcf文件读取和详细解释 在服务器先解压再打开 gunzip 文件 vcf gz cat 文件
  • 弹性盒模型学习

    一 弹性盒布局 1 弹性盒布局的容器指的是采用了弹性布局的DOM元素 而弹性布局的条目指的是容器中包含的子DOM元素 最外围的边框表示的是容器 而编号1和2的边框表示的是容器中的条目 弹性盒布局中有两个相互垂直的坐标轴 一个是主轴 另一个称
  • 【UE虚幻引擎】UE源码版编译、Andorid配置、打包

    首先是要下载源码版的UE 我这里下载的是5 2 1 首先要安装Git 在你准备放代码的文件夹下右键点击Git Bash Here 然后可以直接git clone https github com EpicGames UnrealEngine
  • 51单片机播放音乐(一):蜂鸣器

    51单片机播放音乐 一 蜂鸣器 原理 蜂鸣器 乐谱转成循环次数 单片机代码 仿真电路图 本文完整源码 原理 蜂鸣器 蜂鸣器分为有 震动 源的和无源的 有源的无法控制频率 所以用无源的才能播放音乐 无源蜂鸣器需要自己控制输入变化的信号才能发声
  • Rstudio MarkDown使用教程

    认识MarkDown MarkDown是一种轻量级的 标记语言 它的优点很多 目前也被越来越多的写作爱好者 撰稿者广泛使用 Markdown 的语法十分简单 常用的标记符号也不超过十个 对于大学里掌握了多门语言的我们来说 这种不需要思维 仅
  • R语言—如何下载和使用包

    R语言中有非常多的包 每个包都具有不同的功能 因此 在正式的R语言学习之前 需要学会如何下载和安装R的包 以此进行下一步学习 install packages 安装 1 打开RStudio软件 在RStudio中输入代码install pa
  • 实现增删查改

    核心代码 增 myModel Table1 Add data 删 myModel Table1 Remove data 查 var data myModel Table1 ToList 改 myModel Entry data State
  • js 随机获取数组几个内容

    function getRandomArrayElements arr count var shuffled arr slice 0 i arr length min i count temp index while i gt min in
  • HTML <textarea> 标签

    实例
  • C++设计模式——观察者模式

    观察者模式 Observer 观察者模式是目前应用最广 影响范围最大的模式之一 因为 Observer 的一个实例Model View Control MVC 结构在系统开发架构设计中有着很重要的地位和意义 MVC实现了业务逻辑和表示层的解
  • 羞愧的“码龄3年”开篇之作

    打开账号发现码龄已经三年了 已经忘记了是什么情况之下注册了账号 怎能让账号下空空如也 先来个开篇之作留个痕迹 源于前两天学习了一下脚本语言 今天做一个内容回顾记录一下 以下是学习过程中有些不懂得地方查了各个博客后的整体总结 只针对于个人的只
  • Hadoop集群配置——1

    参考 Python Spark 2 0 Hadoop机器学习与大数据实战 林大贵 著 清华大学出版社 一 Hadoop集群 Hadoop集群需要4台服务器才可以建立 可以进行并行处理 所以在虚拟机上创建了master data1 data3
  • Android Studio Electric Eel提示Gradle插件报错问题的解决方法

    新建一个工程 执行Sync gradle files报错 提示Gradle plugin找不到或者运行库版本不兼容 会有不同的错误提示 摘录部分错误提示如下 解决方法 需要使用JDK 11编译工程 设置步骤 File gt Project
  • C++ 入门算法,你必须懂的“顺序表”

    顺序表简介 顺序表是简单的一种线性结构 他们可以说是连续存储元素的 也可以称之为数组 顺序表可以快速定位到第几个元素的位置 中间不允许有空值 插入 删除时需要移动大量的元素 顺序表的三个要素 用elems记录存储位置的基地址 分配一段连续的
  • 数字信号处理综合实验——Matlab实现DTMF信号的产生与提取

    数字信号处理综合实验 一 实验内容及要求 实验内容 综合运用课程所学相关知识 根据实际信号的频谱特性 确定数字滤波器设计技术指标 设计相应的数字滤波器 实现DTMF信号的提取 设计要求 1 通过查阅资料 自学电话中DTMF信号的产生与检测方