• 大小: 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


评论

共有 条评论

相关资源