📄 dsss.m
字号:
% THIS DEMONSTRATION IS MEANT FOR DIRECT SEQUENE SPREAD SPRECTRUM
% COMMUNICATION USING CHAOTIC SEQUENCE AS SPREADING CODES FOR BPSK
% SIGNAL.NOTE HERE FILTER TAKEN IS JUST FOR SAKE OF SHOWING THE EFFECT
% OF FILTERING ON RECEIVED SIGNAL (APPROPRIATE FILTERS SHOULD BE USED).
clc; close all; clear all;
R = input('TYPE THE FIRST WORD default(MANPAL REDDY) :', 's');
M = isempty(R);
if M == 1
R = 'MANIPAL REDDY';
else
R = R;
end
%TRANSMITTER SECTION OF THE DSSS COMMUNICATION SYSTEM.
RR = double(R); bb = 1; Rp = dec2bin(RR,8);
[TA TC] = size(Rp);
for ll = 1:1:TA
for lg = 1:1:TC
msg(bb) = Rp(ll,lg);
bb = bb + 1;
end
end
msg = msg; %RANDOM MESSAGE TO BE TRANSMITTED
T = 0:(2*pi/239):(2*pi);
car = cos(T); %CARRIER TO BE TRANSMITTED
Full_msg = []; Carrier = [];
%--------------------------------------------------------------------------
% BERNOULLI MAP
%--------------------------------------------------------------------------
B = 1.75; A = .5; phin = 0.25; phi(1) = (B*phin) - A;
for ii = 2:1:1000
if phi(ii-1) > 0
phi(ii) = (B*phi(ii-1)) - A;
else
phi(ii) = (B*phi(ii-1)) + A;
end
end
for tt = 1:1:length(phi)-2
XX(tt) = phi(tt+2);
YY(tt) = phi(tt+1);
ZZ(tt) = phi(tt);
end
Acf = xcorr(phi,phi); % Auto Correlation calculation
%--------------------------------------------------------------------------
% LOGISTIC MAP
%--------------------------------------------------------------------------
A1 = .5; B1 = 4; phin1 = -0.35;
phi1(1) = ( B1*[(A1^2) - (phin1^2)] ) - A1;
for ih = 2:1:1000
phi1(ih) = ( B1*[(A1^2) - (phi1(ih-1)^2)] ) - A1;
end
for tt = 1:1:length(phi1)-2
XX1(tt) = phi1(tt+2);
YY1(tt) = phi1(tt+1);
ZZ1(tt) = phi1(tt);
end
Acf1 = xcorr(phi1,phi1); % Auto Correlation calculation
%-------------------------------------------------------------------------
% QUADRATIC MAP
%-------------------------------------------------------------------------
A2 = 4; B2 = .5; phin2 = 0.15;
phi2(1) = B2 - A2*(phin2^2);
for ib = 2:1:1000
phi2(ib) = B2- (A2*(phi2(ib-1).^2));
end
for tt = 1:1:length(phi2)-2
XX2(tt) = phi1(tt+2);
YY2(tt) = phi1(tt+1);
ZZ2(tt) = phi1(tt);
end
Acf2 = xcorr(phi2,phi2); % Auto Correlation calculation
%-------------------------------------------------------------------------
%TENT MAP
%-------------------------------------------------------------------------
A3 = .5; B3 = 1.99; phin3 = .5;
phi3(1) = A3 - (B3*phin3);
for it = 2:1:1000
phi3(it) = A3 - (B3*abs(phi3(it-1)));
end
for tt = 1:1:length(phi3)-2
XX3(tt) = phi3(tt+2);
YY3(tt) = phi3(tt+1);
ZZ3(tt) = phi3(tt);
end
Acf3 = xcorr(phi3,phi3); % Auto Correlation calculation
%-------------------------------------------------------------------------
ccf01 = xcorr(phi,phi1); ccf12 = xcorr(phi1,phi2); ccf23 = xcorr(phi2,phi3); ccf30 = xcorr(phi3,phi1);
%-------------------------------------------------------------------------
for ii = 1:1:length(msg)
if msg(ii) == '0'
Msge = -1*ones(1,240);
else
Msge = 1*ones(1,240);
end
Full_msg = [Full_msg Msge];
Carrier = [Carrier car];
end
% BPSK SIGNAL TO BE TRANSMITTED.
BPSK_SIG = Carrier.*Full_msg;
% SPREADING SIGNAL BENOULLI SEQUENCE MULTIPLICATION WITH BPSK SIGNALS
BA = 1.75; AA = .5; phinA = 0.25;
phiA(1) = (BA*phinA) - AA;
for ii = 2:1:length(BPSK_SIG)
if phiA(ii-1) > 0
phiA(ii) = (BA*phiA(ii-1)) - AA;
else
phiA(ii) = (BA*phiA(ii-1)) + AA;
end
end
% SPREADING SEQUENCE MULTIPLED BY BPSK SIGNAL.
SPRD_SG = (phiA.*BPSK_SIG);
% UNIFORMLY DISTRIBUTED NOISE ADDED TO SPREAD SIGNAL. ( AFter CHannel SIGnal )
AFCH_SIG = 1*SPRD_SG + (rand(1,length(SPRD_SG)))/200;
% DESPREADED SIGNAL AT THE RECEIVER SECTION.(IN CONVENTIONAL DIRECT SEQUENCE SPECTRUM SYSTEM THE CHIP SEQUENCE IS TO BE USED FOR
% DIVISION, SINCE THESE ARE -1 AND 1,AT THE RECEIVER THEIR INVERSE IS MULTIPLED THAT IS 1/-1 WHICH IS ANYWAY -1 AND 1/1 WHICH IS 1
% SO WHAT YOU MULTPIPLY AT TRANSMITER SECTION IS THE SAME THING YOU MULTIPLY AT RECEIVER SECTION,SO HERE YOU CAN INTERPRET WHY I
% DIVIDED SPREAD SIGNAL BY SEQUENCE).(multiplication of chip sequence needs an envelope detector at RECEIVER SECTION).
DSPD_SG = AFCH_SIG./(phiA);
% FILTERING THE SPIKES USING FILTER AT RECEIVER SECTION.
data = DSPD_SG; windowSize = 15;
AFFILSG = filter(ones(1,windowSize)/windowSize,1,data);
% PSD TO BE CALCULATED.
FFT_DAT = fft(msg); FFT_car = fft(Carrier); FFT_BP = fft(BPSK_SIG); FFT_SP = fft(SPRD_SG);
FFT_ACS = fft(AFCH_SIG); FFT_DSP = fft(DSPD_SG); FFT_AFS = fft(AFFILSG);
% USING CARRIER TO RETRIEVE SENT BINARY INFORMATION.
MMDK = (AFFILSG./Carrier);
% FILTERING THE SPIKES USING FILTER AT RECEIVER SECTION.
dataT = MMDK; windowSize = 120;
RTDT = filter(ones(1,windowSize)/windowSize,1,dataT);
% Time calculation.
Time = 0;
for te = 2:1:length(Carrier)
Time(te) = Time(te-1) + 1;
end
figure(1);
subplot(511); plot(Full_msg); title('\bf message'); axis([0 length(Carrier) -2 2]);
subplot(512); plot(Carrier); title('\bf Carrier to be used for '); axis([0 length(Carrier) -2 2]);
subplot(513); plot(BPSK_SIG); title('\bf BPSK SIGNAL TO BE TRANSMITTED'); axis([0 length(Carrier) -2 2]);
subplot(514); plot(SPRD_SG); title('\bf SPREAD SIGNAL');
subplot(515); plot(Time,Full_msg,'b',Time,Carrier,'r'); title('\bf COMPARISON'); axis([0 length(Carrier) -2 2]);
figure(2);
subplot(431); plot(phi); title('\bf Time series'); ylabel('\bf BERNOULLI'); subplot(432); plot(Acf,'r'); title('\bf ACF'); subplot(433); plot(ccf01,'g'); title('\bf CCF');
subplot(434); plot(phi1); ylabel('\bf LOGISTIC '); subplot(435); plot(Acf1,'r'); subplot(436); plot(ccf12,'g');
subplot(437); plot(phi2); ylabel('\bf QUADRATIC'): subplot(438); plot(Acf2,'r'); subplot(439); plot(ccf23,'g');
subplot(4,3,10); plot(phi3); ylabel('\bf TENT'); subplot(4,3,11); plot(Acf3,'r'); subplot(4,3,12); plot(ccf30,'g');
figure(3);
subplot(421); plot3(ZZ,YY,XX,'k.'); title('\bf Pseudo phase space trajectories'); zlabel('\bf BERNOULLI'); grid on;
subplot(422); plot(ZZ,YY,'r.'); title('\bf Mapping'); xlabel('X(n)'); ylabel('X(n+1)');
subplot(423); plot3(ZZ1,YY1,XX1,'k.'); zlabel('\bf LOGISTIC'); grid on; xlabel('\bf X(n)'); ylabel('\bf X(n+1)'); zlabel('\bf X(n+2)');
subplot(424); plot(ZZ1,YY1,'r.'); xlabel('X(n)'); ylabel('X(n+1)');
subplot(425); plot3(ZZ2,YY2,XX2,'k.'); zlabel('\bf QUADRATIC'); grid on; xlabel('\bf X(n)'); ylabel('\bf X(n+1)'); zlabel('\bf X(n+2)');
subplot(426); plot(ZZ2,YY2,'r.'); xlabel('X(n)'); ylabel('X(n+1)');
subplot(427); plot3(ZZ3,YY3,XX3,'k.'); zlabel('\bf TENT'); grid on; xlabel('\bf X(n)'); ylabel('\bf X(n+1)'); zlabel('\bf X(n+2)');
subplot(428); plot(ZZ3,YY3,'r.'); xlabel('X(n)'); ylabel('X(n+1)');
figure(4);
subplot(411); plot(abs(FFT_DAT)); title('\bf PSD of message');
subplot(412); plot(abs(FFT_car)); title('\bf PSD of Carrier');
subplot(413); plot(abs(FFT_BP)); title('\bf PSD of BPSK SIGNAL');
subplot(414); plot(abs(FFT_SP)); title('\bf PSD of SPREAD SIGNAL');
figure(5);
subplot(411); plot(DSPD_SG); title('SENT BPSK SIGNAL \it \bf WATCH CLOSELY PLEASE');
subplot(412); plot(AFFILSG); title('\bf AFTER FILTERING');
subplot(413); plot(DSPD_SG); axis([0 length(DSPD_SG) -2 2]); title('\bf BEFORE FILTERING');
subplot(414); plot(AFFILSG); axis([0 length(AFFILSG) -2 2]); title('\bf AFTER FILTERING');
figure(6);
subplot(311); plot(abs(FFT_ACS)); title('\bf PSD OF SIGNAL AFTER RECEPTION');
subplot(312); plot(abs(FFT_DSP)); title('\bf PSD OF SIGNAL AFTER DESPREAD AT TRANSMITTER');
subplot(313); plot(abs(FFT_AFS)); title('\bf PSD OF SIGNAL AFTER FILTERING');
figure(7);
subplot(311); plot(Full_msg); title('\bf \it ORIGINAL MESSAGE'); axis([0 length(Full_msg) -2 2]);
subplot(312); plot(MMDK); title('\bf \it RETRIEVED MESSAGE'); axis([0 length(Full_msg) -22 22]);
subplot(313); plot(RTDT); title('\bf \it FILTERED MESSAGE'); axis([0 length(Full_msg) -2 2 ]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -