首页/文章/ 详情

经典课程指导:《数字处理系统课程设计与实践》指导(2)DTMF之八 不断创新

3天前浏览7
本系列文章历时半年多时间才最终完稿!想到付出的辛苦程度,有时会觉得不值。毕竟自己的技术实力摆在这,却要靠写作来挣钱,是不是显得有点寒酸?好在有时会得到牛人的开悟。每个作家好像都会写一个关于为什么要写作的话题,我看过周国平先生写的这方面内容,感触很深。再看王小波写的文字,着实让我感受到了一丝心酸。理工科出身的我会同情小波的遭遇,那么聪明的人没有最后成为计算机专家有些可惜,不过成为了文坛新星也是一件大幸事,贡献了睿智就无所谓文理了。
契诃夫曾经说过,请您尽可能写一些!写、写、写,一直写断手指头为止。您偷懒,少动笔,这当然是不好的。如果您是一个名副其实的新手,无论遇到什么困难,您都不应该忘记:现在写下的每一行字都是未来的资本。如果您现在不训练自己的手和脑,使它习惯于条理性和强行军,如果你不抓紧时间鞭策自己,那么过上三四年之后,就会追悔莫及了。
大文豪都这么努力,我这种小小的工程师哪敢懈怠?那就把自己的经验和所学都写成未来的资本吧!完美的行为产生于完全的无功利之心,所以我永远到达不了完美,甚至有些俗气。一个人的自画像只有自己描述会比较准确和透彻。
进入正题!对于某些环境下的拨号音,之前的检测还是会出错。通过断点调试,发现是门限设置过高导致的检测出错。那该怎么优化程序呢?只能按照之前说的思路尝试一下啦!结果如何呢?看下面的视频吧!
本人终于将算法成形了,实用化的过程确实很考验人的耐心哦!做学问必须能随时提出新问题,解决新问题,绝不能因循守旧,固步自封。做学问必须有勇气、有耐心,看准了一个问题,就要勇往直前,衣带渐宽终不悔,不捣黄龙绝不休。在这里,我用季羡林的话与算法工程师同仁共勉。
写了这么多篇文章,很少能得到的赞。也许粉丝们压根就不在意你文章的好与坏,在意你文章是否有用。互联网上点赞是一种美德和气度。这种赞会像一颗糖,可以给写作人的生活带来甜味,带来动力。也许唯有坚持,才能获取更多的赞。每每看到网上一篇篇超过十万赞的文章,我也只能徒有羡鱼情,也会自省不足!本文为DTMF检测课程指导的收篇之作,超过六千字,包含了两个产品级算法程序,非专业人士不要付费阅读!
让我们一起看看代码吧,要注意与之前代码的差异之处哦!算法不是一蹴而就的,没有之前几篇文章的摸索和积累,不可能成就最后产品级算法的出炉。
% 把双声道的数据都加载一起,这一步很重要,一个声道高频分量多一些,一个声道低频分量多一些
% 采样率过高,不利于滤波器的设计。采样率降低到8000Hz,需要对数据进行采样率的变换。
%%% 采样率变换
% 采样率从48000Hz降低到8000Hz
fs = 8000;% 设置新的采样率 Hz
data = resample(data,fs,Fs);  % 变采样率
%%% 数据归一化处理
signal = data ./ max(abs(data));
% 从时域观察,每个音长1000个采样点,大约125ms。
%%%%%%%%%    滤波器生成及滤波      %%%%%%%%%
%%% 采用FIR滤波器进行设计
%%% 每一个频率对应一个滤波器
f_H = [1209 1336 1477 1633];% 高频群
f_L = [697 770 852 941];% 低频群
f_H_1 = [0,(f_H(1)-10)/(fs/2)-0.03,(f_H(1)-10)/(fs/2),(f_H(1)+10)/(fs/2),(f_H(1)+10)/(fs/2)+0.03,1];
% 1209的频率向量
f_H_2 = [0,(f_H(2)-10)/(fs/2)-0.02,(f_H(2)-10)/(fs/2),(f_H(2)+10)/(fs/2),(f_H(2)+10)/(fs/2)+0.02,1];
% 1336的频率向量
f_H_3 = [0,(f_H(3)-10)/(fs/2)-0.02,(f_H(3)-10)/(fs/2),(f_H(3)+10)/(fs/2),(f_H(3)+10)/(fs/2)+0.02,1];
% 1477的频率向量
f_H_4 = [0,(f_H(4)-10)/(fs/2)-0.02,(f_H(4)-10)/(fs/2),(f_H(4)+10)/(fs/2),(f_H(4)+10)/(fs/2)+0.02,1];
% 1633的频率向量
f_L_1 = [0,(f_L(1)-10)/(fs/2)-0.02,(f_L(1)-10)/(fs/2),(f_L(1)+10)/(fs/2),(f_L(1)+10)/(fs/2)+0.02,1];
%  697的频率向量
f_L_2 = [0,(f_L(2)-10)/(fs/2)-0.02,(f_L(2)-10)/(fs/2),(f_L(2)+10)/(fs/2),(f_L(2)+10)/(fs/2)+0.02,1];
%  770的频率向量
f_L_3 = [0,(f_L(3)-10)/(fs/2)-0.02,(f_L(3)-10)/(fs/2),(f_L(3)+10)/(fs/2),(f_L(3)+10)/(fs/2)+0.02,1];
%  852的频率向量
f_L_4 = [0,(f_L(4)-10)/(fs/2)-0.02,(f_L(4)-10)/(fs/2),(f_L(4)+10)/(fs/2),(f_L(4)+10)/(fs/2)+0.02,1];
%  941的频率向量

m = [0 0 1 1 0 0];% 幅度向量
%%% 滤波器设计
fir_older = 91;% 滤波器阶数
fir_filter_H_1 = firpm(fir_older,f_H_1,m);% 1124-1296 / 1209 
fir_filter_H_2 = firpm(fir_older,f_H_2,m);% 1250-1420 / 1336 
fir_filter_H_3 = firpm(fir_older,f_H_3,m);% 1390-1562 / 1477 
fir_filter_H_4 = firpm(fir_older,f_H_4,m);% 1546-1718 / 1633 


来源:通信工程师专辑
SolidWorks
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-02-09
最近编辑:3天前
算法工匠
博士后 | 高级工程师 诚信做事 认真讲课 传播知识
获赞 405粉丝 2625文章 387课程 40
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈