数字信号处理实验3 双音多频的通信
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数字信号处理》作业
实验3 双音多频的通信
双音多频是4x4按钮键盘的一种编码方法,它的原理是用一个低频正弦波和一个高频的正弦波组合成为一个按钮信号。双音多频通常简写为DTMF。作为一种通信手段,DTMF广泛应用在电话拨号中,作用是控制电话局的交换机快速和准确地连接通话线路;DTMF也可以用来控制爆炸,用咋爱自动取款机、信息传送等方面。
双音多频的信号产生和解调可以用模拟电路来实现,也可以用数字信号处理来实现。下面用数字信号处理的方法,在计算机上实现双音多频的通信。基本的双音多频MATLAB程序如下:
请从数字信号处理的角度分析以上的各条指令的作用。
善用已学的知识经常会获得事半功倍的效果。理解指令k=[18,20,22,24,31,34,38,42]的作用时,请利用频率的分辨率和离散频率的序号的关系。理解指令t=80的作用时,观察205点长的双音频信号的频谱
实验程序:
%%%%键盘号码发射机%%%%
DTMF=['123A';'456B';'789C';'*0#D']; %设置双音多频的键盘号码矩阵
fL=[697,770,852,941];fH=[1209,1336,1477,1633]; %设置键盘的低频和高频正弦波的频率
n=0:1000; %产生双音频声音信号的样本序号
fs=8000; %设定声音样本的采样频率
b=input('请输入按键的号码:','s'); %在MATLAB 的命令窗中输入电话键盘的号码
L=length(b); %计算在命令窗中输入的号码长度
for m=1:L, %将输入的号码分别与键盘的号码逐个进行对比
for p=1:4, %按照键盘的行顺序进行对比
for q=1:4, %按照键盘的列顺序进行对比
if DTMF(p,q)==abs(b(m)),break,end; %确定与第m 个输入号码b(m)相符的键盘号码的列号
end
if DTMF(p,q)==abs(b(m)),break,end; %确定与第m 个输入号码b(m)相符的键盘号码的列号
end
x(m,:)=sin(2*pi*fL(p)*n/fs)+sin(2*pi*fH(q)*n/fs); %根据p 和q 产生对应该键盘号码的双音频正弦波信号
sound(x(m,:),fs);pause(0.2); %放该键盘号码的双音频声音,暂停0.2 秒
end
%%%%键盘号码接收机%%%%
N=205; %分析双音频信号时需要的最少样本数量
k=[18,20,22,24,31,34,38,42]; %低频和高频在N点长的离散傅里叶变换中对应的最佳顺序
r=80; %检测双音频信号的门槛值
d=[]; %检测双音频信号对应的键盘号码的初始值
for m=1:L; %检测接收的双音频信号x 的每个键盘号码信号
X(m,:)=abs(x(m,1:N)*exp(-j*2*pi/N*(1:N)'*k)); %第m 个号码信号xm:的8 种频率的正弦波分量的幅度
for s=1:4; %寻找该双音频信号xm:的低频正弦波分量
if X(m,s)>r,break,end %如果其正弦波分量的幅度Xms大于门槛值r 就退出该循环end
for t=5:8; %寻找该双音频信号xm:的高频正弦波分量
if X(m,t)>r,break,end %如果其正弦波分量的幅度Xmt大于门槛值r 就退出该循环end
d=[d,DTMF(s,t-4)]; %根据xm:的低频和高频正弦波的位置形成它们的键盘号码矩阵位置end;
disp(['检测得到的号码是:',d]); %显示检测双音频信号x 后得到的号码
stem(k,X(1,:),'k')