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

📄 dsss.m

📁 本程序应用了混沌序列作为伪码生成器对直接扩频系统进行了仿真
💻 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 + -