经典课程指导:《数字处理系统课程设计与实践》指导(2)DTMF之六 程序比较和总结
终于要结束这个课程设计的讲解了,还有点依依不舍。毕竟自己倾注了大半年的心血来编写这个课题,在线下还给学生讲了课。天下总有不散的宴席,期待大家能从中获益!等系列文章里面,大家会看到算法工程师在考虑问题和解决问题过程中的思路,这个思路是非常有助于大家的,相当于经验传承。进入主题。本文超过四千字,希望有需要的同行能够耐心看完,必然会获取相当多的工程经验!!!
淡泊明志!本人喜欢写作,也很勤奋,希望写的工程类的文章能够实实在在的帮助到大家。条条大路通罗马!除了上篇文章讲的DTMF自适应检测的实现方法,还有没有其他的方法呢?我们再来看看之前学生小王写的代码,看如何优化能够使其实用化。毕竟在性价比很低的情况下,想通过滤波器来检测出时域信号,难度相当大。而在没有太大干扰的情况下,用滤波器的方式应该是可以实现。从资源利用的角度来说,滤波器的实现方式似乎更耗资源。一起来看程序进行比较吧!本系列文章所含程序中涉及的信号源已经在网盘永久共享了,有多个信号源。看看滤波器方式下的检测效果!针对19815809852.wav这个文件进行测试!针对18626669098.wav这个文件进行测试!这说明:小王同学的程序中的检测算法还算比较强大!毕竟没有对程序进行改动还能正确检测出绝大部分号码,已属不易!这是sim1的检测结果。但是程序的计算量确实太大了,每次都要对段信号进行滤波处理,然后再检测!有没有可能简化呢?从产品角度出发考虑,整个信号应该经过一个大的带通滤波器再进行相关检测,这是考虑了产品的完备性。带通的范围包含了这七个频点!% fre_1 = [0 630 680 1650 1700 4000]/4000; % m = [0 0 1 1 0 0];% 幅度向量% fir_older = 100;% 滤波器阶数 % fir_filter = firpm(fir_older,fre_1,m);但是当初让小王采用滤波器的形式对信号进行解析的目的是为了实现信号的流处理,小王程序里面的思路却还是段处理。那该如何实现流处理呢?看看下面的sim2程序!