close all ;
RB=2.5*10^4;
TB=1/RB;
fc1=4*RB; %设置载波
fc2=6*RB;
Fs=2.5*10^6;
N= Fs*TB ;
N=round (N) ;
H_Level=ones (1,N) ;
L_Level=zeros (1,N) ;
A=1 ;
time= datestr(datetime('now'));
Signal= '2120837+190020xx-xx+张三' ;
Sign_Set=dataEncode(Signal) ;
Sign=(Sign_Set) ;
Sign_length=length(Sign) ;
disp(Signal);
disp(time);
t=0:1/Fs:TB*Sign_length-1/Fs ;
df=Fs/ length(t) ;
f =-Fs/ 2:df:Fs/ 2-df;
%将码元转换为数字信号,1表示为高电平,0表示为低电平
for I=1 :Sign_length
if Sign(I)==1
Sign_orgin( (I-1) *N+1:I*N)=H_Level; %Signorgin 定义为-一个矩阵,用来存放原始基带信号波形图形
else
Sign_orgin( (I-1) *N+1:I*N)=L_Level;
end
end
figure (1)
subplot (4,1,1) ;
plot (t,Sign_orgin) ;
axis([0, TB* (Sign_length+1) /10,-(A/2) ,A+ (A/2) ]) ;
title('单极性不归零(NRZ)基带信号时域') ;
xlabel ( '时间t/s') ;
grid;
subplot (4,1,2)
fmt=fft(Sign_orgin) ;%对时域信号进行FET变换,计算其频谱
fmt=fftshift(fmt) ;
fmt=abs( fmt) ;
fmt_dB=fmt.^2/TB;
maxF=max (fmt_dB) ;
fmt_dB=fmt_dB/ maxF ;
fmt_dB= 10* log10 ( fmt_dB +eps) ;
plot (f, fmt_dB) ;
axis([ -2.5*10^5 2.5*10^5 -150 0] ) ;
xlabel ( '频率(Hz) ') ;ylabel ('功率谱幅度值(dB) ') ;
title('单极性不归零(NRZ)基带信号功率谱密度(dB) ') ;
grid;
%-------设置载波信号-----
carrier1=cos(2*pi*fc1*t) ;
carrier2=cos(2*pi*fc2*t) ;
subplot (4, 1,3) ;
plot (carrier1) ;
axis([0 TB* (Sign_length+1)/10^(-4) ,-1.2,1.2]) ;
title( '载波信号1波形') ;
xlabel ( '时间t/s') ;
grid;
subplot (4, 1,4) ;
plot (carrier2) ;
axis([0 TB* (Sign_length+1) /10^(-4) ,-1.2,1.2]) ;
title( '载波信号2波形') ;
xlabel( '时间t/s') ;
grid;
for I=1 : length (t)
if Sign_orgin(I)==0
Sign_orgin_mod(I)=A*carrier1 (I) ;
%2FSK调制.
else
Sign_orgin_mod(I) =A*carrier2(I) ;
end
end
figure (2) ;
subplot (2, 1,1) ;
plot (t,Sign_orgin_mod) ;
axis([0 TB* (Sign_length+1)/10^2,-1.2,1.2]) ;
title( '2FSK调制信号') ;
xlabel ( '时间t/s') ;
grid;
subplot (2, 1,2) ;
fmt=fft(Sign_orgin_mod) ;
%号对时域信号进行FFT变换,计算其频谱
fmt=fftshift(fmt) ;
fmt=abs(fmt) ;
fmt_dB=fmt.^2/TB;
maxF=max (fmt_dB) ;
fmt_dB=fmt_dB/maxF;
fmt_dB= 10*log10(fmt_dB +eps) ;
plot(f, fmt_dB) ;
axis( [-2.5*10^5 2.5*10^5 -150 0]) ;
xlabel ('频率(Hz) ') ;ylabel ( '功率谱幅度值(dB) ') ;
title ('2FSK调制信号功率谱密度(dB) ') ;
grid;
%-----------------------3、已调2FSK信号中叠加噪声----------------------号
figure (3)
subplot(2, 1,1) ;
plot(t,Sign_orgin_mod) ;
axis([0 TB* (Sign_length+1) /10^2,-1.2,1.2]) ;
title('2FSK调制信号') ;
xlabel ('时间t/s') ;
grid;
subplot(2,1,2) ;
snr=10;
%信噪比设置为10DB
noise_2fsk=awgn(Sign_orgin_mod, snr, 'measured'); %添加噪声 前测量一下输入信号的功率,并根据SNR添加高斯噪声
plot (t,noise_2fsk) ;
axis([0 TB*(Sign_length+1)/10^2,-1.2,1.2]) ;
title('接收端叠加噪声后的FSK调制信号波形图') ;
xlabel ( '时间t/s') ;
grid;
noise_2fsk=conv(noise_2fsk,20) ;%匹配滤波
%--------4、对FSK信号(含噪声)带通滤波----------------------8
%------带通滤波------8
figure (4)
m=3.5;
%调制指数为3. 5
w1=[ (fc1-m*RB)*2/Fs fc1*2/Fs] ;
w2=[fc2*2/Fs (fc2+m*RB) *2/Fs] ;
b1=fir1(50,w1) ;
b2=fir1(50, w2) ;
bs1_fsk=filter(b1, 1,noise_2fsk) ;
bs2_fsk=filter(b2, 1,noise_2fsk) ;
subplot(2,2,1) ;
plot(t,bs1_fsk) ;
axis([0, TB*(Sign_length+1)/30,-14, 14]) ;
title('第一路:带通滤波器后FSK信号波形') ;
xlabel ( '时间t/s') ;
grid;
subplot(2,2,2) ;
plot(t,bs2_fsk) ;
axis([0, TB*(Sign_length+1)/30,-14,14]) ;
title('第二路:带通滤波器后FSK信号波形1') ;
xlabel ( '时间t/s') ;
grid;
subplot(2,2, 3) ;
spf1=fft (bs1_fsk) ;
%对时域信号进行FFT变换,计算其频谱
spf1=fftshift(spf1) ;
plot (f,abs(spf1) ) ;
axis ([-3*10^5 3*10^5 -500 80000]) ;
xlabel ('频率(Hz) ') ;ylabel ( '频谱幅度值') ;
title('第一路: FSK 调制信号带通滤波后频谱') ;
grid;
subplot (2,2, 4)
spf2=fft (bs2_fsk) ;
%对时域信号进行FET变换,计算其频谱
spf2=fftshift(spf2) ;
plot(f,abs(spf2) ) ;
axis ([-3*10^5 3*10^5 -500 80000]) ;
xlabel ('频率(Hz) ') ;ylabel ('频谱幅度值') ;
title('第二路: FSK 调制信号带通滤波后频谱') ;
grid;
%----对带通滤波后的数据进行全波整流----号
figure (5)
abs1_fsk=abs (bs1_fsk) ;
abs2_fsk=abs (bs2_fsk) ;
subplot (2,2,1) ;
plot(t,abs1_fsk) ;
axis([0, TB* (Sign_length+1) *75/10^3,-0.5,14]) ;
title('第一路:全波整流后FSK信号波形') ;
xlabel ( '时间t/s') ;
grid;
subplot (2,2,2) ;
plot(t,abs2_fsk) ;
axis( [0, TB* (Sign_length+1) *75/10^3,-0.5,14]) ;
title('第二路:全波整流后FSK信号波形') ;
xlabel ('时间t/s') ;
grid;
subplot (2,2,3) ;
spf1=fft (abs1_fsk) ;
%对时域信号进行FFT变换,计算其频谱
spf1=fftshift (spf1) ;
plot (f,abs (spf1) ) ;
axis( [-1*10^4 1*10^4 -200 110000] ) ;
xlabel ( '频率(Hz) ') ;ylabel ( '频谱幅度值') ;
title('第一路:全波整流信号幅频特性') ;
grid;
subplot (2,2, 4)
spf2=fft (abs2_fsk) ;
%对时域信号进行FET变换,计算其频谱
spf2=fftshift (spf2) ;
plot(f,abs (spf2) ) ;
axis( [-1*10^4 1*10^4 -200 110000]) ;
xlabel ( '频率(Hz) ') ;ylabel ( '频谱幅度值') ;
title('第二路:全波整流信号幅频特性') ;
grid;
%对整流后的数据进行低通滤波
figure(6)
Lb=fir1 (50, RB*2/Fs) ;
Lpf1_fsk=filter(Lb, 1, abs1_fsk) ;
Lpf2_fsk=filter(Lb, 1, abs2_fsk) ;
subplot (2,2,1) ;
plot (t, Lpf1_fsk) ;
axis ([0, TB*(Sign_length+1)/ 10,-1,9]) ;
xlabel( '时间t/s') ;
title('第一路:低通滤波后包络检波信号波形') ;
grid;
subplot(2,2,2) ;
plot(t, Lpf2_fsk) ;
axis([0, TB*(Sign_length+1)/10,-1, 9]) ;
xlabel ('时间t/s') ;
title('第二路:低通滤波后包络检波信号波形') ;
grid;
subplot (2,2, 3)
spf=fft (Lpf1_fsk) ;
%对时域信号进行FFT变换,计算其频谱
spf1=fftshift (spf) ;
plot (f,abs(spf1) ) ;
axis([-1*10^4 1*10^4 -200 110000] ) ;
xlabel ('频率(Hz) ') ;ylabel ( '频谱幅度值') ;
title('第一路:低通滤波后包络检波信号的幅频特性') ;
grid;
subplot(2,2, 4) ;
spf=fft(Lpf2_fsk) ;
spf2=fftshift(spf) ;
plot(f,abs (spf2) ) ;
axis([-1*10^4 1*10^4 -200 110000]);
xlabel ( '频率(Hz) ') ;ylabel ( '频谱幅度值') ;
title('第二路:低通滤波后包络检波信号的幅频特性') ;
grid;
%利用加法器使低通滤波后两路信号相减
figure (7) ;
Demod_fsk=Lpf1_fsk-Lpf2_fsk;
subplot (3,1,1) ;
plot (t, Demod_fsk) ;
axis( [0, TB*(Sign_length+1)/10,-9, 9]) ;
title ( '加法器相减后输出信号波形') ;
xlabel ( '时间t/s') ;
grid;
%-----抽样判决,还原基带信号波形---号
f=(1 :Sign_length) ;%定义一个数组
for I=1 :Sign_length
if Demod_fsk( (2*I) *N/2) <0
Sign_result( (I-1) *N+1:I*N)=H_Level;
f(I)=1;
else
Sign_result( (I-1) *N+1:I*N)=L_Level ;
f (I)=0;
end
end
subplot (3, 1,2) ;
plot (t,Sign_orgin) ;
axis([0, TB*(Sign_length+1)/10,-(A/2) ,A+ (A/2) ]) ;
title('基带信号波形') ;
xlabel ('时间t/s') ;
grid;
subplot (3, 1,3) ;
plot(t, Sign_result) ;
axis([0, TB*(Sign_length+1)/10,-(A/2) ,A+ (A/2) ]) ;
title ('还原后的基带信号波形') ;
xlabel ('时间t/s') ;
grid;
%--------6、译码
res_dataDecode(f) %对恢复出的二进制流进行译码
time1=datestr(datetime('now'));
disp(time1);
bit_errors2=find(Sign~=f) ; %find函数返回的是位置f为恢复出的二进制绝对码Sign 为自己设定的信号
bit_error_count2=size(bit_errors2,2) ; %获取bit errors2 的列数
%-----------7. 2FSK误码率分析---------------------参数设定
RB=2.5*10^4; %1900201426学号相加为25KBaud码元速率
TB=1/RB; %码元长度TB
fc1=4*RB;%载波频率1
fc2=6*RB;%载波频率2
w1=2*pi*fc1;
w2=2
评论0