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

📄 aaa.asv

📁 CDMA的matlab仿真CDMA的matlab仿真CDMA的matlab仿真
💻 ASV
字号:
% Program 5-6
%
% Simulation program to realize DS-CDMA system
%
% dscdma.m
%
% 2006.8.9
clear all;
clc;

%----------------------preparation part -----------------------------
sr=256000.0;                            % symboll rate
ml=2;                                       % number of modulation levels
br=sr*ml;  % bit rate
nd=100;    % number of symbol
ebno=8;    % Ebno

%-----------------------------------------------Filter initialization-----------------
irfn=21;
IPOINT=8;
alfs=0.5;
[xh]=hrollfcoef(irfn,IPOINT,sr,alfs,1);       % Transmitting Filter
[xh2]=hrollfcoef(irfn,IPOINT,sr,alfs,0);      % Received Filter

%------------------------------ Spreading code initialization--------------------
user=1;   % number of users
seq=1;  % 1:m-sequence     2:Gold    3:orthogonal Gold
stage=3;
ptap1=[1 3];
ptap2=[2 3];
regi1=[1 1 1];
regi2=[1 1 1];

% ----------------------------- Generation of the spreading code --------
switch seq
    case 1
        code=mseq(stage,ptap1,regi1,user);
    case 2
        m1=mseq(stage,ptap1,regi1);
        m2=mseq(stage,ptap2,regi2);
        code=goldseq(m1,m2,user);
    case 3
        m1=mseq(stage,ptap1,regi1);
        m2=mseq(stage,ptap2,regi2);
        code=[goldseq(m1,m2,user),zeros(user,1)];
end
code=code*2-1;
clen=length(code);

% ---------------------------------- Fading initialization ---------------
rfade=0;   % Rayleigh fading  0:nothing  1:consider
itau=[0,8];   % delay time
dlvl1=[0.0,40.0];  % attenuation level
n0=[6,7];
th1=[0.0,0.0];
itnd1=[3001,4004];
now1=2;
tstp=1/sr/IPOINT/clen;  % time resolution
fd=160;
flat=1;
itnde1=nd*IPOINT*clen*30;

% ----------------------------- Start calculation -------------
nloop=1000;
noe=0;  % Number of error data 
nod=0;  % Number of transmitted data


for ii=1:nloop
    
    % -------------------------- Transmitter ---------------------
    data=rand(user,nd*ml)>0.5;
    [ich,qch]=qpskmod(data,user,nd,ml);
    
    [ich1,qch1]=spread(ich,qch,code);
    
    [ich2,qch2]=compoversamp2(ich1,qch1,IPOINT);
    [ich3,qch3]=compconv2(ich2,qch2,xh);
    
    if user==1
        ich4=ich3;
        qch4=qch3;
    else
        ich4=sum(ich3);
        qch4=sum(qch3);
    end

 % -------------------------- Fading channel -------------------
 if rfade==0
     ich5=ich4;
     qch5=qch4;
 else
     [ich5,qch5]=sefade(ich4,qch4,itau,dlvl1,th1,n0,itnd1,...
         now1,length(ich4),tstp,fd,flat);
     itnd1=itnd1+itnde1;
 end
 
 % ---------------------------------- Receiver  -----------------------------
 spow=sum(rot90(ich3.^2+qch3.^2))/nd;
 attn=sqrt(0.5*spow*sr/br*10^(-ebno/10));
 
 [ich6,qch6]=comb2(ich5,qch5,attn);
 
 [ich7,qch7]=compconv2(ich6,qch6,xh2); % filter
 
 samp1=irfn*IPOINT+1;
 ich8=ich7(:,samp1:IPOINT:IPOINT*nd*clen+samp1-1);
 qch8=qch7(:,samp1:IPOINT:IPOINT*nd*clen+samp1-1);
 
 [ich9 qch9]=despread(ich8,qch8,code);
 
 demodata=qpskdemod(ich9,qch9,user,nd,ml);   % QPSK demodulation
 
 %--------------------- BER -----------------------------
 noe2=sum(sum(abs(data-demodata)));
 nod2=user*nd*ml;
 noe=noe+noe2;
 nod=nod+nod2;
 
%fprintf('%d\t%e\n',ii,noe2/nod2);
end

% ------------------------------Data file --------------------------

ber=noe/nod;
fprintf('%d\t%d\t%d\t%e\n',ebno,noe,nod,ber);

fid=fopen('BER.mat','a');
fprintf(fid,'%d\t%d\t%d\t%e\n',ebno,noe,nod,ber)

fclose(fid);

% --------------------------- end of file ----------------------

⌨️ 快捷键说明

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