首页
发现
课程
培训
文章
案例
问答
需求
服务
行家
赛事
热门搜索
发布
消息
注册
|
登录
首页
/
文章
/
详情
经典课程指导:《数字处理系统课程设计与实践》指导(2)DTMF之四 自适应检测
精品
作者优秀
平台推荐
详细信息
文章亮点
作者优秀
优秀教师/博士学历/特邀专家/独家讲师
平台推荐
内容稀缺
算法工匠
5月前
浏览1133
关注
继续讲解!循序渐进的讲解需要有听众,可惜自己线下课堂的学生只有一两位能跟着学!那还有写的必要吗?当然有!网上很多人想学的。数字信号处理技术是可以倚靠吃饭的家伙,学精了,还愁没有好工作吗?
面对学生们的懒惰,只能不断的劝说,效果甚微。一学期结束后,老师的心态也需要不断的调整。我自己做了几年的老师后,发现真的很难有成就感。经常感慨:教书不可为不用心,但听我的学生又有几人?不管学生们的表现如何,我自己是一直有危机感的。至少直到现在,我还在坚持每天写代码和看书。我会坚持下去,因为这也成为了我的生活方式。
关于流信号和段信号处理方式的差异已经录成视频课程(数字信号处理仿真),在仿真秀网站上可以看到!本文接近四千字,仿真程序内容较多,非专业人士莫入!
流处理!
如何把
goertzel算法应用于流信号处理?
需要大家好好思考了!现在请跟着老师的代码一步一步的学下去!引导式教学需要大家动脑筋,这样掌握了就是自己的知识!先看程序的仿真结果!
大家看的懂仿真结果吗?再来看具体代码!
% Generate DTMF tones
Fs = 8000; % Sampling frequency 8 kHz
N = 800; % Tones of 100 ms
t = (0:N-1)/Fs; % 800 samples at Fs
pit = 2*pi*t;
tones = zeros( N, numel(symbol));
for i = 1 : numel(symbol)
switch (symbol{i})
case '1'
tones(:,i) = sum(sin(f(:,1)*pit))'; % 合并两个音频信号
case '2'
tones(:,i) = sum(sin(f(:,2)*pit))';
case '3'
tones(:,i) = sum(sin(f(:,3)*pit))';
case '4'
tones(:,i) = sum(sin(f(:,4)*pit))';
case '5'
tones(:,i) = sum(sin(f(:,5)*pit))';
case '6'
tones(:,i) = sum(sin(f(:,6)*pit))';
case '7'
tones(:,i) = sum(sin(f(:,7)*pit))';
case '8'
tones(:,i) = sum(sin(f(:,8)*pit))';
case '9'
tones(:,i) = sum(sin(f(:,9)*pit))';
case '*'
tones(:,i) = sum(sin(f(:,10)*pit))';
case '0'
tones(:,i) = sum(sin(f(:,11)*pit))';
case '#'
tones(:,i) = sum(sin(f(:,12)*pit))';
end
end
for i = 1:12
p = audioplayer(tones(:,i),Fs,16);
% 在默认音频设备上播放该音频对象
play(p)
% 暂停执行0.5秒
pause(0.5)
end
aaa = 1;
%% 用 Goertzel 算法估计 DTMF 音调
Nt = 205;
original_f = [lfg(:); hfg(:)]; % Original frequencies
k = round(original_f/Fs*Nt); % Indices of the DFT
estim_f = round(k*Fs/Nt);
% Frequencies at which the DFT is estimated
tones = tones(1:205,:);
% 截断音调,只保留205个采样或25.6毫秒
toneChoice = 12 % Select tone
tone = tones(:,toneChoice);
% Estimate DFT using Goertzel
% 自编函数
ydft = func_goertzel_v1(tone,k);
% 注意参数的差异!!!
figure
subplot(4,1,1),plot(abs(ydft(1,:)))
subplot(4,1,2),plot(abs(ydft(2,:)))
subplot(4,1,3),plot(abs(ydft(3,:)))
subplot(4,1,4),plot(abs(ydft(4,:)))
figure
subplot(3,1,1),plot(abs(ydft(5,:)))
subplot(3,1,2),plot(abs(ydft(6,:)))
subplot(3,1,3),plot(abs(ydft(7,:)))
继续深入下去!
修改信号源进行检测!
但同时要考虑到算法和数据的长度有关联!改动Nt的值会发现 Goertzel 算法的结果也在变化!
% Generate DTMF tones
Fs = 8000; % Sampling frequency 8 kHz
N = 800; % Tones of 100 ms
t = (0:N-1)/Fs; % 800 samples at Fs
pit = 2*pi*t;
tones = zeros( N, numel(symbol));
for i = 1 : numel(symbol)
switch (symbol{i})
case '1'
tones(:,i) = sum(sin(f(:,1)*pit))'; % 合并两个音频信号
case '2'
tones(:,i) = sum(sin(f(:,2)*pit))';
case '3'
tones(:,i) = sum(sin(f(:,3)*pit))';
case '4'
tones(:,i) = sum(sin(f(:,4)*pit))';
case '5'
tones(:,i) = sum(sin(f(:,5)*pit))';
case '6'
tones(:,i) = sum(sin(f(:,6)*pit))';
case '7'
tones(:,i) = sum(sin(f(:,7)*pit))';
case '8'
tones(:,i) = sum(sin(f(:,8)*pit))';
case '9'
tones(:,i) = sum(sin(f(:,9)*pit))';
case '*'
tones(:,i) = sum(sin(f(:,10)*pit))';
case '0'
tones(:,i) = sum(sin(f(:,11)*pit))';
case '#'
tones(:,i) = sum(sin(f(:,12)*pit))';
end
end
来源:通信工程师专辑
登录后免费查看全文
立即登录
UM
Origin
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-01-08
最近编辑:5月前
算法工匠
博士后
|
高级工程师
诚信做事 认真讲课 传播知识
关注
获赞 416
粉丝 2705
文章 472
课程 40
点赞
收藏
作者推荐
可试听
数字信号处理和MATLAB仿真(第一部分 理论学习和仿真)
¥1000
5.0
立即查看
0/200
清空
提交
还没有评论
课程
培训
服务
行家
大型游乐设施基础知识讲解
2024趣味CAD设计实战课程:solidworks双人太空漫步机
2021工程仿真大赛:不同形状预制破片侵彻坦克复合装甲效应研究
Abaqus教程及案例分析
相关推荐
基于Python语言HyperWorks二次开发精讲:加倍二次开发效率与工程应用能力
star-ccm旋翼无人机流固双向耦合叶片颤振教程
Abaqus-UMAT-各向异性线弹性UMAT
2025新年仿真技术应用(二):Johnson-Cook本构在Ls-dyna中的实现
最新文章
动态摩擦模型在铝合金冲压CAE 分析中的应用
ANSA二次开发创建螺栓预紧力
数字揭秘丨什么?!Altair EDEM竟然可以用来解答高考物理压轴的电磁力学题?
CST EMC仿真 | 再聊双锥天线建模,如何对标规格书设置天线E面方向图
新论文:适用复杂工程问题的可恢复粒子群优化算法
热门文章
钻完井工程| 钻井工程设计
3.如何加载注释或者测试数据
测井原理与解释-普通电阻率测井
【机器人】PUMA工业机器人3D模型图纸 stp格式 五自由度工业机械手臂数模
一项新技术或许提供了一种新思路可以让碳纤维的强度至少还可以提高10倍
其他人都在看
惯性释放介绍
如何设计一款靠谱的气瓶保护罩?一文解锁全流程
行业分享丨泛亚汽车数字化转型实践:虚拟仿真技术如何赋能汽车研发的创新实践?
批量生产中的碎屑压印优化经验分享
锂离子电池极片微观结构与机理⑥
VIP会员
学习计划
福利任务
下载APP
联系我们
微信客服
联系客服
人工服务时间为周一至周五的9:30-19:30
非工作时间请在微信客服留言
客服热线:
4000-969-010
邮箱:
service@fangzhenxiu.com
地址:
北京市朝阳区莱锦创意园CN08座
帮助与反馈
返回顶部