-
大小: 3KB文件类型: .rar金币: 1下载: 0 次发布日期: 2021-05-10
- 语言: Matlab
- 标签: DTMFMatlab
资源简介
利用Matlab编写的DTMF双音多频信号的生成与检测程序。
可以生成DTMF信号,并可按照一定信噪比传输,可滤除工频干扰,并依据噪声自适应检测识别信号。
代码片段和文件信息
%Copyright:Mingxu Zhang
%2015/3/15
%DTMF signal detect
%设信号经滤波后为r
tm = [‘1‘‘2‘‘3‘‘a‘;‘4‘‘5‘‘6‘‘b‘;‘7‘‘8‘‘9‘‘c‘;‘*‘‘0‘‘#‘‘d‘];% DTMF信号代表的16个数
f1=[697770852941]; % 行频率向量
f2=[1209133614771633]; % 列频率向量
v=fir1(2220.02‘high‘);
r = conv(sv);
w = 0;
Average = 0;
OUT = ‘00000000‘;
K=[1820222431343842];
for l = 100:200;
Average = Average + r(l)^2/100;
end
Average = 100*Average;
c = 1;
f = 1;
for u = 1:100;
w = w + r(c+u)^2;
end
while c<32620 && f<9;
w = w - r(c)^2 + r(c+u+1)^2;
if w>2*Average;
X=goertzel(r(c+10:c+215)K+1); % 用Goertzel算法计算八点DFT样本
val = abs(X); % 列出八点DFT向量
subplot(42f);
stem(Kval‘.‘);grid;xlabel(‘k‘);ylabel(‘|X(k)|‘); % 画出DFT(k)幅度
axis([10 50 0 120]);
limit = 50; %
for t = 5:8;
if val(t) > limit break end % 查找列号
end
for g=1:4;
if val(g) > limit break end % 查找行号
end
OUT(f) = tm(gt-4);
f = f + 1;
while w>1.5*Average && f < 9;
c = c + 1;
w = w - r(c)^2 + r(c+u+1)^2;
end
else
c = c + 1;
end
end
disp(OUT);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1352 2015-03-15 09:59 DTMF\detect.m
文件 1588 2015-03-15 09:59 DTMF\dtmf.m
文件 809 2015-03-15 10:00 DTMF\generate.m
文件 341 2015-03-15 10:00 DTMF\transmit.m
目录 0 2015-03-15 10:01 DTMF
----------- --------- ---------- ----- ----
4090 5
评论
共有 条评论