?? fhss.m
字號:
clc;
clear all;
%--擴頻通信過程
Ts=0.00001;fs=1/Ts;
EndTime=2-Ts; %2s
%--產(chǎn)生信息序列
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調(diào)制
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調(diào)制的頻譜
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調(diào)制后的頻譜');
xlabel('frequency(Hz)');
axis([0 100 -inf inf]);
%--fsk調(diào)制后,地通濾波
cof_low=fir1(64,25/fs);
SignalFSK_1=filter(cof_low,1,SignalFSK);
figure(3);
plot(time,SignalFSK_1);
title('fsk調(diào)制后經(jīng)過低通濾波的波形');
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;
figure(4);
plot(f,PSignalFSK_1(1:nfft/2+1));
title('fsk調(diào)之后經(jīng)低通濾波的頻譜');
xlabel('frequency(hz)');
axis([0 100 -inf inf]);
%--混頻
fc=1000;Tc=1/fc; % 頻點:1000
[Carrier,time]=gensig('sin',Tc,EndTime,Ts); %--產(chǎn)生擴頻載波
MixSignal=SignalFSK_1.*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('經(jīng)過帶通濾波的混頻信號');
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('經(jīng)過帶通濾波的混頻信號頻譜');
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); %--產(chǎn)生擴頻載波
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_1=filter(cof_low,1,ySign_rec);
figure(10);
plot(time,Sign_rec_1);
title('解擴后的下邊頻的信號');
xlabel('time(seconds)');
axis([0 2 -1 1]);
YSign_rec_1=fft(Sign_rec_1,nfft);
PSign_rec_1=YSign_rec_1.*conj(YSign_rec_1)/nfft;
f=fs*(0:nfft/2)/nfft;
figure(11);
plot(f,PSign_rec_1(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_1);
DeFSK1=fileter(cof_f1,1,Sign_rec_1);
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('恢復(fù)的信息');
xlabel('time(senconds)');
axis([0 2 -2 2]);
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -