📄 lirong.m
字号:
%各种参数初始化
clear all;
t_symbol=0.1;
f_sample=8000; %采样频率
t_sample=1/8000; %采样周期
frequency_LL=[697 770 852 941];
frequency_HH=[1209 1336 1477 1633];
symbols=['1' '2' '3' 'a';'4' '5' '6' 'b';'7' '8' '9' 'c';'#' '0' '*' 'd'];
ID_string=input('请输入您的学号: ','s');
SNR_dB=input('请输入信噪比(单位:dB): ');%输入信噪比
SNR=power(10,SNR_dB/10);%信号与噪声功率比
signal_amplitude=1;
power_of_signal=1;
sigma=sqrt(1/SNR);
LL=length(ID_string);
total_ss=[];
for nn=1:LL
[row,col]=identify_ID(ID_string(nn));
wl=2*pi*row/8000;
wh=2*pi*col/8000;
ss1=DTMF_1(wl);
ss2=DTMF_1(wh);
ss=ss1+ss2;
total_ss=[total_ss ss];
end
number=[];
for nn=1:LL
nu=code(ID_string(nn));
number=[number nu];
end
nozero(number);
pause;
%画波形
figure
subplot(3,2,1);
plot(total_ss);
title('DTMF信号时域波形');
subplot(3,2,2);
plot(abs(fft(total_ss)));
title('DTMF信号频域波形图');
noise=sigma*randn(1,length(total_ss));
subplot(3,2,3);
plot(noise);
title('噪声时域波形图');
subplot(3,2,4);
plot(abs(fft(noise)));
title('噪声频域波形图');
zz=total_ss+noise;%加入噪声
subplot(3,2,5);
plot(zz);
title('混入噪声的信号时域波形图');
subplot(3,2,6);
plot(abs(fft(zz)));
title('混入噪声的信号频域波形图');
pause;
zzz=zz;
%detect signal starting position
NN1=t_symbol/t_sample;
NN2=NN1/2;
NN=length(zzz)/NN1;
vector=[1,NN1,-500,500];
%符号检测
for nn=0:NN-1 %对N个符号检测
figure
for k=1:4 %对低频组4个匹配滤波器运算
ss(1)=1;
ss(2)=0;
coef=2*pi*frequency_LL(k)/f_sample;
b0=sin(coef);
a1=2*cos(coef);
for n=3:NN1
ss(n)=a1*ss(n-1)-ss(n-2)+b0*zzz(n+nn*NN1);
end
%匹配滤波器输出信号的模值
XX(k)=0;
for tt=1:5
XX(k)=XX(k)+ss(NN2-tt)*ss(NN2-tt);
end
subplot(4,2,k);
plot(ss,'r');
title(k);
axis(vector);
end
for k=1:4 %对高频组4个匹配滤波器运算
ss(1)=1;
ss(2)=0;
coef=2*pi*frequency_HH(k)/f_sample;
b0=sin(coef);
a1=2*cos(coef);
for n=3:NN1
ss(n)=a1*ss(n-1)-ss(n-2)+b0*zzz(n+nn*NN1);
end
%匹配滤波器输出信号的模值
YY(k)=0;
for tt=1:5
YY(k)=YY(k)+ss(NN2-tt)*ss(NN2-tt);
end
subplot(4,2,k+4);
plot(ss,'r');
title(k+4);
axis(vector);
end
%符号判决
[xxx,row_r]=max(XX);
[yyy,col_r]=max(YY);
symbols=['1' '2' '3' 'a';'4' '5' '6' 'b';'7' '8' '9' 'c';'#' '0' '*' 'd'];
symbol_r(nn+1)=symbols(row_r,col_r);
end
pause;
disp('您输入的学号是:');
disp(symbol_r);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -