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

📄 kuoping.m

📁 用matlab编写的用于跳频技术的基于simulink环境的仿真程序-using Matlab prepared for the frequency-hopping technology based
💻 M
字号:
clc 
clear all 
%--------- 扩频通信过程 --------------- 
%--------- 只仿真一个频点的情况 --------------- 
%--------- 初始化 --------------- 
Ts=0.00001; fs=1/Ts; 
EndTime=2-Ts; %2s 
%--------- 产生信息序列(双极性不归零码) --------------- 
Tm=0.25; fm=1/Tm; clc 
clear all 
%--------- 扩频通信过程 --------------- 
%--------- 只仿真一个频点的情况 --------------- 
%--------- 初始化 --------------- 
Ts=0.00001; fs=1/Ts; 
EndTime=2-Ts; %2s 
%--------- 产生信息序列(双极性不归零码) --------------- 
Tm=0.25; fm=1/Tm; %码率 
[u,time] = gensig('square',2*Tm,EndTime,Ts); 
y = 2*(u-0.5); 
figure(1) 
plot(time,y); 
title('信息序列') 
xlabel('time (seconds)') 
axis([0 2 -2 2]) 
%--------- FSK调制 --------------- 
T0=0.1; f0=1/T0; 
T1=0.2; f1=1/T1; 
[u0,time] = gensig('sin',T0,EndTime,Ts); 
[u1,time] = gensig('sin',T1,EndTime,Ts); 
y0=u0.*sign(-y+1); 
y1=u1.*sign(y+1); 
SignalFSK=y0+y1; % FSK信号 %码率 
[u,time] = gensig('square',2*Tm,EndTime,Ts); 
y = 2*(u-0.5); 
figure(1) 
plot(time,y); 
title('信息序列') 
xlabel('time (seconds)') 
axis([0 2 -2 2]) 
%--------- FSK调制 --------------- 
T0=0.1; f0=1/T0; 
T1=0.2; f1=1/T1; 
[u0,time] = gensig('sin',T0,EndTime,Ts); 
[u1,time] = gensig('sin',T1,EndTime,Ts); 
y0=u0.*sign(-y+1); 
y1=u1.*sign(y+1); 
SignalFSK=y0+y1; % FSK信号 
%--------- FSK调制的频谱 --------------- 
nfft=fs+1; 
Y = fft(SignalFSK,nfft); 
PSignalFSK = Y.* conj(Y) / nfft; 
f = fs*(0:nfft/2)/nfft; 
figure(2); 
plot(f,PSignalFSK(1:nfft/2+1)) 
title('FSK调制后的频谱') 
xlabel('frequency (Hz)') 
axis([0 100 -inf inf]) 
%--------- FSK调制后,低通滤波 --------------- 
cof_low=fir1(64,25/fs); 
SignalFSK_l=filter(cof_low,1,SignalFSK); 
figure(3) 
plot(time,SignalFSK_l); 
title('FSK调制后经过低通滤波的波形') 
xlabel('time (seconds)') 
axis([0 2 -2 2]) 
YSignalFSK_l = fft(SignalFSK_l,nfft); 
PSignalFSK_l = YSignalFSK_l.* conj(YSignalFSK_l) / nfft; 
f = fs*(0:nfft/2)/nfft; 
figure(4); 
plot(f,PSignalFSK_l(1:nfft/2+1)) 
title('FSK调制后经过低通滤波的频谱') 
xlabel('frequency (Hz)') 
axis([0 100 -inf inf]) 
%--------- 混频 -------------- 
fc=1000;Tc=1/fc; %频点: 1000 
[Carrier,time] = gensig('sin',Tc,EndTime,Ts); %产生扩频载波 
MixSignal=SignalFSK_l.*Carrier; 
figure(6) 
plot(time,MixSignal); 
title('混频后的波形') 
xlabel('time (seconds)') 
axis([0 2 -2 2]) 
%--------- 带通滤波 -------- 
cof_band=fir1(64,[fc-12.5,fc+12.5]/fs); 
yMixSignal=filter(cof_band,1,MixSignal); 
figure(7) 
plot(time,yMixSignal); 
title('经过带通滤波的混频信号') 
xlabel('time (seconds)') 
axis([0 2 -2 2]) 
YMixSignal = fft(yMixSignal,nfft); 
PMixSignal = YMixSignal.* conj(YMixSignal) / nfft; 
f = fs*(0:nfft/2)/nfft; 
figure(8); 
plot(f,PMixSignal(1:nfft/2+1)) 
title('经过带通滤波的混频信号频谱') 
xlabel('frequency (Hz)') 
axis([800 1200 -inf inf]) 
%---------- 传输信道 -------------- 
Sign_send=yMixSignal; 
Sign_rec=Sign_send; 
%---------- 传输信道 --------------- 
%---------- 接收端 --------------- 
%---------- 解扩 ---------------- 
fc=1000;Tc=1/fc; 
[Carrier,time] = gensig('sin',Tc,EndTime,Ts); %产生扩频载波 
Sign_rec=Sign_send; 
ySign_rec=Sign_rec.*Carrier; 
figure(9) 
plot(time,ySign_rec); 
title('解扩后的信号') 
xlabel('time (seconds)') 
axis([0 2 -1 1]) 
%---------- 低通滤波,取下边频 ------------ 
yrr=ySign_rec; 
cof_low=fir1(64,25/fs); 
Sign_rec_l=filter(cof_low,1,ySign_rec); 
figure(10) 
plot(time,Sign_rec_l); 
title('解扩后的下边频的信号') 
xlabel('time (seconds)') 
axis([0 2 -1 1]) 
YSign_rec_l = fft(Sign_rec_l,nfft); 
PSign_rec_l = YSign_rec_l.* conj(YSign_rec_l) / nfft; 
f = fs*(0:nfft/2)/nfft; 
figure(11); 
plot(f,PSign_rec_l(1:nfft/2+1)) 
title('解扩后的下边频频谱') 
xlabel('frequency (Hz)') 
axis([0 100 -inf inf]) 
%---------- FSK译码 -------------- 
cof_f0=fir1(64,[f0-0.25,f0+0.25]/fs); 
cof_f1=fir1(64,[f1-0.25,f1+0.25]/fs); 
DeFSK0=filter(cof_f0,1,Sign_rec_l); 
DeFSK1=filter(cof_f1,1,Sign_rec_l); 
rDeFSK0=DeFSK0.*u0; 
rDeFSK1=DeFSK1.*u1; 
rDeFSK=rDeFSK0-rDeFSK1; 
figure(12); 
plot(time,rDeFSK) 
title('采样判决前的信号') 
xlabel('time (seconds)') 
axis([0 2 -2 2]) 
%----------- 采样判决 --------------- 
Sampletime=0.25/Ts; 
Message=[]; 
Num=0; 
while(Num<2/Ts) 
if(mod(Num,Sampletime)==0) 
Message=[Message ones(1,Sampletime+1)*sign(sum(rDeFSK((Num+1):(Num+Sampletime))))]; 
end 
Num=Num+Sampletime; 
end 
figure(13); 
plot((1:length(Message))/fs,Message) 
title('恢复的信息') 
xlabel('time (seconds)') 
axis([0 2 -2 2]) 
%--------- 产生8位m序列,控制频率合成器产生频率变化的高频载波 --------------- 
clear all; 
clc; 
%--------- 初始化 --------------- 
MAXCLOCK=1000000; %步长是0.01ms 
PNSeq=[0 0 0 0 0 0 0 1]; 
PNSeq1=[0 0 0 1 0 0 1 1]; 
InitialPNSeq=PNSeq; 
InitialPNSeq1=PNSeq1; 
PNSeqNum=1; %第几次选择频率 
SaveFrq=[]; 
SaveFrq1=[]; 
%--------- 主仿真时钟 --------------- 
CLOCK=0; %单位是 ms/100 
step=5000; %每100表示1ms 
%--------- 产生 M 序列 --------------- 
sim('SimCreatMSeq'); 
%--------- 仿真开始 --------------- 
while CLOCK < MAXCLOCK 
CLOCK=CLOCK+step; 
if mod(CLOCK,5000)==0 
%--------- 产生 M 序列 --------------- 
% 5 ms 跳一次频, 每秒200跳 
%---------选择频率 --------------- 
MixFrq=SelectFrq(PNSeq(PNSeqNum:PNSeqNum+7))/1000e3; 
MixFrq1=SelectFrq(PNSeq1(PNSeqNum:PNSeqNum+7))/1000e3; 
PNSeqNum=PNSeqNum+1; 
SaveFrq=[SaveFrq MixFrq]; 
SaveFrq1=[SaveFrq1 MixFrq1]; 
end 
end 
%结果画图 
figure(1); 
for i=1:length(SaveFrq) 
plot(i/200,SaveFrq(i)/10,'s'); 
plot(i/200,SaveFrq1(i)/10,'x'); 
hold on; 
end 
title('跳频点的变化情况') 
xlabel('time (seconds)') 
ylabel('frequence (MHz)') 
axis([0 1 89 90]); 
%--------- 根据m序列的8位状态,选择频率 --------------- 
functionFrq=SelectFrq(Code) 
tempCode=128*Code(8)+64*Code(7)+32*Code(6)+16*Code(5)+8*Code(4)+4*Code(3)+2*Code(2)+Code(1); 
if(tempCode>200) 
tempCode=tempCode-128; 
end 
MaxFrq=94*1e6; 
MinFrq=88*1e6; 
Frq=(MaxFrq-MinFrq)/200*(tempCode-0)/2+MinFrq; %(MaxFrq-MinFrq)/200=30 
clc 
clear all 
%--------- 扩频通信过程 --------------- 
%--------- 只仿真一个频点的情况 --------------- 
%--------- 初始化 --------------- 
Ts=0.00001; fs=1/Ts; 
EndTime=2-Ts; %2s 
%--------- 产生信息序列(双极性不归零码) --------------- 
Tm=0.25; fm=1/Tm; clc 
clear all 
%--------- 扩频通信过程 --------------- 
%--------- 只仿真一个频点的情况 --------------- 
%--------- 初始化 --------------- 
Ts=0.00001; fs=1/Ts; 
EndTime=2-Ts; %2s 
%--------- 产生信息序列(双极性不归零码) --------------- 
Tm=0.25; fm=1/Tm; %码率 
[u,time] = gensig('square',2*Tm,EndTime,Ts); 
y = 2*(u-0.5); 
figure(1) 
plot(time,y); 
title('信息序列') 
xlabel('time (seconds)') 
axis([0 2 -2 2]) 
%--------- FSK调制 --------------- 
T0=0.1; f0=1/T0; 
T1=0.2; f1=1/T1; 
[u0,time] = gensig('sin',T0,EndTime,Ts); 
[u1,time] = gensig('sin',T1,EndTime,Ts); 
y0=u0.*sign(-y+1); 
y1=u1.*sign(y+1); 
SignalFSK=y0+y1; % FSK信号 %码率 
[u,time] = gensig('square',2*Tm,EndTime,Ts); 
y = 2*(u-0.5); 
figure(1) 
plot(time,y); 
title('信息序列') 
xlabel('time (seconds)') 
axis([0 2 -2 2]) 
%--------- FSK调制 --------------- 
T0=0.1; f0=1/T0; 
T1=0.2; f1=1/T1; 
[u0,time] = gensig('sin',T0,EndTime,Ts); 
[u1,time] = gensig('sin',T1,EndTime,Ts); 
y0=u0.*sign(-y+1); 
y1=u1.*sign(y+1); 
SignalFSK=y0+y1; % FSK信号 
%--------- FSK调制的频谱 --------------- 
nfft=fs+1; 
Y = fft(SignalFSK,nfft); 
PSignalFSK = Y.* conj(Y) / nfft; 
f = fs*(0:nfft/2)/nfft; 
figure(2); 
plot(f,PSignalFSK(1:nfft/2+1)) 
title('FSK调制后的频谱') 
xlabel('frequency (Hz)') 
axis([0 100 -inf inf]) 
%--------- FSK调制后,低通滤波 --------------- 
cof_low=fir1(64,25/fs); 
SignalFSK_l=filter(cof_low,1,SignalFSK); 
figure(3) 
plot(time,SignalFSK_l); 
title('FSK调制后经过低通滤波的波形') 
xlabel('time (seconds)') 
axis([0 2 -2 2]) 
YSignalFSK_l = fft(SignalFSK_l,nfft); 
PSignalFSK_l = YSignalFSK_l.* conj(YSignalFSK_l) / nfft; 
f = fs*(0:nfft/2)/nfft; 
figure(4); 
plot(f,PSignalFSK_l(1:nfft/2+1)) 
title('FSK调制后经过低通滤波的频谱') 
xlabel('frequency (Hz)') 
axis([0 100 -inf inf]) 
%--------- 混频 -------------- 
fc=1000;Tc=1/fc; %频点: 1000 
[Carrier,time] = gensig('sin',Tc,EndTime,Ts); %产生扩频载波 
MixSignal=SignalFSK_l.*Carrier; 
figure(6) 
plot(time,MixSignal); 
title('混频后的波形') 
xlabel('time (seconds)') 
axis([0 2 -2 2]) 
%--------- 带通滤波 -------- 
cof_band=fir1(64,[fc-12.5,fc+12.5]/fs); 
yMixSignal=filter(cof_band,1,MixSignal); 
figure(7) 
plot(time,yMixSignal); 
title('经过带通滤波的混频信号') 
xlabel('time (seconds)') 
axis([0 2 -2 2]) 
YMixSignal = fft(yMixSignal,nfft); 
PMixSignal = YMixSignal.* conj(YMixSignal) / nfft; 
f = fs*(0:nfft/2)/nfft; 
figure(8); 
plot(f,PMixSignal(1:nfft/2+1)) 
title('经过带通滤波的混频信号频谱') 
xlabel('frequency (Hz)') 
axis([800 1200 -inf inf]) 
%---------- 传输信道 -------------- 
Sign_send=yMixSignal; 
Sign_rec=Sign_send; 
%---------- 传输信道 --------------- 
%---------- 接收端 --------------- 
%---------- 解扩 ---------------- 
fc=1000;Tc=1/fc; 
[Carrier,time] = gensig('sin',Tc,EndTime,Ts); %产生扩频载波 
Sign_rec=Sign_send; 
ySign_rec=Sign_rec.*Carrier; 
figure(9) 
plot(time,ySign_rec); 
title('解扩后的信号') 
xlabel('time (seconds)') 
axis([0 2 -1 1]) 
%---------- 低通滤波,取下边频 ------------ 
yrr=ySign_rec; 
cof_low=fir1(64,25/fs); 
Sign_rec_l=filter(cof_low,1,ySign_rec); 
figure(10) 
plot(time,Sign_rec_l); 
title('解扩后的下边频的信号') 
xlabel('time (seconds)') 
axis([0 2 -1 1]) 
YSign_rec_l = fft(Sign_rec_l,nfft); 
PSign_rec_l = YSign_rec_l.* conj(YSign_rec_l) / nfft; 
f = fs*(0:nfft/2)/nfft; 
figure(11); 
plot(f,PSign_rec_l(1:nfft/2+1)) 
title('解扩后的下边频频谱') 
xlabel('frequency (Hz)') 
axis([0 100 -inf inf]) 
%---------- FSK译码 -------------- 
cof_f0=fir1(64,[f0-0.25,f0+0.25]/fs); 
cof_f1=fir1(64,[f1-0.25,f1+0.25]/fs); 
DeFSK0=filter(cof_f0,1,Sign_rec_l); 
DeFSK1=filter(cof_f1,1,Sign_rec_l); 
rDeFSK0=DeFSK0.*u0; 
rDeFSK1=DeFSK1.*u1; 
rDeFSK=rDeFSK0-rDeFSK1; 
figure(12); 
plot(time,rDeFSK) 
title('采样判决前的信号') 
xlabel('time (seconds)') 
axis([0 2 -2 2]) 
%----------- 采样判决 --------------- 
Sampletime=0.25/Ts; 
Message=[]; 
Num=0; 
while(Num<2/Ts) 
if(mod(Num,Sampletime)==0) 
Message=[Message ones(1,Sampletime+1)*sign(sum(rDeFSK((Num+1):(Num+Sampletime))))]; 
end 
Num=Num+Sampletime; 
end 
figure(13); 
plot((1:length(Message))/fs,Message) 
title('恢复的信息') 
xlabel('time (seconds)') 
axis([0 2 -2 2]) 
%--------- 产生8位m序列,控制频率合成器产生频率变化的高频载波 --------------- 
clear all; 
clc; 
%--------- 初始化 --------------- 
MAXCLOCK=1000000; %步长是0.01ms 
PNSeq=[0 0 0 0 0 0 0 1]; 
PNSeq1=[0 0 0 1 0 0 1 1]; 
InitialPNSeq=PNSeq; 
InitialPNSeq1=PNSeq1; 
PNSeqNum=1; %第几次选择频率 
SaveFrq=[]; 
SaveFrq1=[]; 
%--------- 主仿真时钟 --------------- 
CLOCK=0; %单位是 ms/100 
step=5000; %每100表示1ms 
%--------- 产生 M 序列 --------------- 
sim('SimCreatMSeq'); 
%--------- 仿真开始 --------------- 
while CLOCK < MAXCLOCK 
CLOCK=CLOCK+step; 
if mod(CLOCK,5000)==0 
%--------- 产生 M 序列 --------------- 
% 5 ms 跳一次频, 每秒200跳 
%---------选择频率 --------------- 
MixFrq=SelectFrq(PNSeq(PNSeqNum:PNSeqNum+7))/1000e3; 
MixFrq1=SelectFrq(PNSeq1(PNSeqNum:PNSeqNum+7))/1000e3; 
PNSeqNum=PNSeqNum+1; 
SaveFrq=[SaveFrq MixFrq]; 
SaveFrq1=[SaveFrq1 MixFrq1]; 
end 
end 
%结果画图 
figure(1); 
for i=1:length(SaveFrq) 
plot(i/200,SaveFrq(i)/10,'s'); 
plot(i/200,SaveFrq1(i)/10,'x'); 
hold on; 
end 
title('跳频点的变化情况') 
xlabel('time (seconds)') 
ylabel('frequence (MHz)') 
axis([0 1 89 90]); 
%--------- 根据m序列的8位状态,选择频率 --------------- 
functionFrq=SelectFrq(Code) 
tempCode=128*Code(8)+64*Code(7)+32*Code(6)+16*Code(5)+8*Code(4)+4*Code(3)+2*Code(2)+Code(1); 
if(tempCode>200) 
tempCode=tempCode-128; 
end 
MaxFrq=94*1e6; 
MinFrq=88*1e6; 
Frq=(MaxFrq-MinFrq)/200*(tempCode-0)/2+MinFrq; %(MaxFrq-MinFrq)/200=30 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -