一个matlab有关跳频的代码:结果图出全部,代码部分出过信道前,需要完整代码加q:1458144750,ten rmb,完美运行,结果清晰。详见下面文章。
1.跳频通信初始化
%%%%%%%%%跳频通信%%%%%%
close all;
clc;
clear all;
%1.跳频通信初始化
Ts=0.00001;
fs=1/Ts;
Endtime=8-Ts;
%产生原始信息序列
Tm=0.2;
fm=1/Tm;
[u,time]=gensig('square',2*Tm,Endtime,Ts);%%%gensig函数
y=2*(u-0.5);
figure(1)
plot(time,y);
title('信息序列')
xlabel('time(seconds)')
axis([0 2 -2 2])
2.信息序列FSK调制
%信息序列的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;
nfft=fix(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_1=filter(cof_low,1,SignalFSK);
figure(3)
subplot(2,1,1)
plot(time,SignalFSK_1);
title('FSK调制后经过低通滤波器的波形');
xlabel('time(seconds)');
axis([0 2 -2 2])
YSignalFSK_1=fft(SignalFSK_1,nfft);
PSignalFSK_1=YSignalFSK_1.*conj(YSignalFSK_1)/nfft;
f=fs*(0:nfft/2)/nfft;
subplot(2,1,2)
plot(f,PSignalFSK_1(1:nfft/2+1));
title('FSK经过低通滤波后的频谱')
xlabel('frequency(Hz)')
axis([0 100 -inf inf])
HopFrq=4*fs;
HopTime=1/HopFrq;
Hop_Num=0;
Total_Mix=[];
fc1=[1000,1030,1120,1240];
color=['b','r','k','m'];
while(Hop_Num)<4;
Hop_Num=Hop_Num+1;
end
%信号混频%
fc=1000;Tc=1/fc;
[carrier,time]=gensig('sin',Tc,Endtime,Ts);%产生扩频载波
MixSignal=SignalFSK_1.*carrier;
figure(4)
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(5)
subplot(2,1,1)
plot(time,MixSignal);
title('经过带通滤波的混频信号 ')
xlabel('time/s');
axis([0 2 -2 2]);
YMixSignal=fft(yMixSignal,nfft);
PMixSignal=YMixSignal.*conj(YMixSignal)/nfft;
f=fs*(0:nfft/2)/nfft;
subplot(2,1,2)
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(6)
plot(time,ySign_rec);
title('解跳后的信号')
xlabel('time(seconds)')
axis([0 2 -1 1])
完整结果图:
以上就是完整的结果图了,欢迎学习,共同进步!