⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dtmfproducing.m

📁 dtmf源代码
💻 M
字号:
function [Dtmf,Dtmflong]=DTMFproducing(frequency,fs,signaltime,wholetime)
%本程序利用软件模拟DSP的方式产生两个数字正玄波振荡器并把输出合成起来,建立双音频信号。
%Dtmf为生成的双音频数据序列
%Dtmflong为生成数据序列长度,即采样点数
%frequency=941;                 %音频频率
%fs=8000;                       %采样频率 
%signaltime=45;                 %信号持续时间
%wholetime=100;                 %信号持续时间+静音时间
%----------------以下代码检验输入参数是否合理-----------------%
if(nargin>4|nargin<4)
    errordlg('输入参数个数应该为4','Principle Error')
end
if(frequency<0|fs<0)
    errordlg('输入频率参数必须大于0','Logical Error');
end
if(signaltime<0|wholetime<0)
    errordlg('输入时间参数必须大于0','Logical Error');
end
if(fs<2*frequency)
    errordlg('采样频率必须大于信号频率的2倍 ','Principle Error');
end
if(signaltime>wholetime)
    errordlg('信号持续时间应小于每个数字传送时间','Logical Error');
end
%----------------以下代码产生双音频信号-----------------------%
Dtmflong=round(wholetime*10^(-3)*fs);            %采样点数:100ms*8000点/s 
Sdtmflong=round(signaltime*10^(-3)*fs);          %信号持续点数
coef=2*pi*frequency/fs;                          %?
Dtmf=zeros(1,Dtmflong);                          %初始化双音频数据序列:0
Dtmf(1,1)=sin(coef);                             %Dtmf第一个元素,即y(1)
Dtmf(1,2)=sin(2*coef);                           %y(2)=2*cos(coef)*y(1)=2*cos(coef)*sin(coef)=sin(2*coef)
for i=3:1:Sdtmflong
    Dtmf(1,i)=2*cos(coef)*Dtmf(1,i-1)-Dtmf(1,i-2);
end                                              %y(n)
%subplot(2,1,1)
%plot(Dtmf)
%title('DTMF信号')
%gwn=GWnoise(0,0.2,Dtmflong)
%Dtmf=Dtmf+gwn;
%subplot(2,1,2)
%plot(Dtmf)
%title('加噪DTMF信号')

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -