📄 ffh_syc.m
字号:
clear all
clc
close all
Fd=20; %码元速率 20KHz
FsFd=600; %每符号采样点数 Fs/Fd
Fs=Fd*FsFd; %系统采样率 12MHz
f0=20; %空号频率 "0" 20KHz
f1=40; %传号频率 "1" 40KHz
Fc=(f0+f1)/2; %载频 30KHz
tone=f1-f0; %载波频率间隔 20KHz
M=2; %进制数
n0=20; %仿真符号数
%产生20个二进制随机码
bits=randsrc(n0,1,[0:M-1]);%产生20个二进制随机码
%figure(1)
%stem([0:n0-1],bits(1:n0),'bx')
%title('二进制随机序列')
%xlabel('Time'),ylabel('Amplitude');
%ylim([0 1.1])
%---------- FSK调制 ---------------------
[s_fsk,t]=dmod(bits,Fc,Fd,Fs,'fsk',M,tone);
td=t*Fd;
figure(1)
plot(td,s_fsk,'b-')
title('调制后的信号')
xlabel('Symbols'),ylabel('s_{FSK}')
ylim([-1.1 1.1])
%--------- FSK调制后,低通滤波 --------------
cof_low=fir1(64,60/Fs);
s_fir=filter(cof_low,1,s_fsk);
%figure(3)
%plot(td,s_fir)
%title('FSK信号经过低通滤波的波形')
%xlabel('Symbols'),ylabel('s_{FIR}')
%ylim([-1.1 1.1])
%--------- 跳频信号产生 ---------------
Rh=2*Fd; % 跳频速率 40000 hops/s, 2跳/符号
hopNum=4; % 跳频点数 4
Fh=[1000 1200 1400 1600]; % 跳频频率 KHz
k=linspace(0,1/n0/2,1/n0/2*Fs);
carrier1=cos(2*pi*Fh(1)*k); % 产生扩频载波
carrier2=cos(2*pi*Fh(2)*k);
carrier3=cos(2*pi*Fh(3)*k);
carrier4=cos(2*pi*Fh(4)*k);
hop_sequence=[1 3 2 3 2 4 1 4 1 3 2 3 2 4 1 4 1 3 2 3 2 4 1 4 1 3 2 3 2 4 1 4 1 3 2 3 2 4 1 4]; %跳频序列周期为 8
s_hop=[];
for i=1:2*n0
switch(hop_sequence(i))
case(1)
s_mix=s_fir((FsFd/2*(i-1)+1):(FsFd/2*i)).*carrier1';
cof_passband=fir1(64,[Fh(1)-30,Fh(1)+30]/Fs);
s_mix_fir=filter(cof_passband,1,s_mix);
s_hop=[s_hop s_mix'];
case(2)
s_mix=s_fir((FsFd/2*(i-1)+1):(FsFd/2*i)).*carrier2';
cof_passband=fir1(64,[Fh(2)-30,Fh(2)+30]/Fs);
s_mix_fir=filter(cof_passband,1,s_mix);
s_hop=[s_hop s_mix'];
case(3)
s_mix=s_fir((FsFd/2*(i-1)+1):(FsFd/2*i)).*carrier3';
cof_passband=fir1(64,[Fh(3)-30,Fh(3)+30]/Fs);
s_mix_fir=filter(cof_passband,1,s_mix);
s_hop=[s_hop s_mix'];
case(4)
s_mix=s_fir((FsFd/2*(i-1)+1):(FsFd/2*i)).*carrier4';
cof_passband=fir1(64,[Fh(4)-30,Fh(4)+30]/Fs);
s_mix_fir=filter(cof_passband,1,s_mix);
s_hop=[s_hop s_mix'];
end
end
%------------- 跳频信号及频谱观察 ----------------
figure(2)
plot(td,s_hop)
title('混频器输出的跳频信号')
xlabel('time (seconds)')
axis([0 n0 -1.1 1.1])
nfft=Fs+1;
y_signal_hop = fft(s_hop,nfft);
p_signal_hop = y_signal_hop.* conj(y_signal_hop) / nfft;
f = Fs*(0:nfft/2)/nfft;
figure(3)
plot(f,p_signal_hop(1:nfft/2+1))
title('混频信号的频谱')
xlabel('frequency (Hz)')
axis([0 3200 -inf inf])
%----------- AWGN信道模拟 -----------
snr=10.^8;
s_mix=awgn(s_hop,snr,'measured');
figure(4)
plot(td,s_mix)
title('通过信道的信号')
axis([0 n0 -1.1 1.1])
%------------ 同步捕获 -------------
%----------- 解跳 ----------------
spread_signal=[];
for i=1:2*n0
switch(hop_sequence(i))
case(1)
spread_signal=[spread_signal carrier1];
case(2)
spread_signal=[spread_signal carrier2];
case(3)
spread_signal=[spread_signal carrier3];
case(4)
spread_signal=[spread_signal carrier4];
end
end
s_rcv=s_mix.*spread_signal;
%figure(7)
%plot(td,s_rcv)
%title('解跳以后的信号')
%xlabel('time (seconds)')
%axis([0 n0 -1.1 1.1])
%%---------- 2FSK信号非相干解调 ----------------
z2=ddemod(s_rcv,Fc,Fd,Fs,'fsk/noncoh',M,tone)';
figure(5)
stem([0:n0-1],bits(1:n0),'bx');
hold on;
stem([0:n0-1],z2(1:n0),'ro');
hold off;
axis([0 n0 0 1.2]);
title('非相干解调后的信号')
legend('原输入二进制随机序列','非相干解调后的信号')
xlabel('Time'),ylabel('Amplitude')
%----------- 误码率统计 ---------------
%[errorSym ratioSym]=symerr(bits,z2);
%figure(6)
%simbasebandex([0:1:5]);
%title('非相干解调后误码率统计')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -