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

📄 lirong.m

📁 用matlab仿真电话的通信。DTMF仿真
💻 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 + -