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

📄 ds.m

📁 ds-cdma系统仿真
💻 M
字号:
% Program 5-6
%
% Simulation program to realize DS-CDMA system
%
% dscdma.m
%
% Programmed by M.Okita and H.Harada
% 

%**************************** Preparation part *****************************
% function ber=ds(b) 
clear
nd=10;                                                         % number of symbol
ebn0=0:8;                                                           % Eb/No
user=4; 
                                                         % number of users
% %******************** Generation of the spreading code *********************
m=64;
code=walsh(m); 

%************************** Fading initialization **************************
x=randn(1,4);
y=randn(1,4);
alfa1=x+j.*y;
alfa2=x-j.*y;
ap=[0,0,-2,-3];
ap=10.^(ap/10);
r1=ap.*alfa1;
r2=ap.*alfa2;
tau=[0,1,3,7];

%**************************** START CALCULATION ****************************

for ii=1:length(ebn0)                              % simulation number of times
noe   = 0;
nod   = 0;

% while(noe<500)   
for iii=1:1000
%****************************** Transmitter ********************************
    data=rand(user,nd) > 0.5;
    data1=2*data-1;
    data2=spread(data1,zeros(size(data1)),code(2:user+1,:));        % spreading
    
    if user == 1                                      % transmission
        data3=data2;
    else
        data3=sum(data2);
    end
    
%***************************** Fading channel ******************************
% x=randn(1,4);
% y=randn(1,4);
% alfa1=x+j.*y;
% alfa2=x-j.*y;
% ap=[0,0,-2,-3];
% ap=10.^(ap/10);
% r1=ap.*alfa1;
% r2=ap.*alfa2;
% tau=[0,1,3,7];
for i=1:length(tau)
    data4(i,:)=delay1(data3,zeros(size(data3)),length(data3),tau(i));
    data5(i,:)=r1(i).*data4(i,:);
end
data6=sum(data5);

%******************************** Receiver *********************************
    spow = sum(rot90(data2.^2))/nd;                      % attenuation Calculation
    attn = sqrt(0.5*spow*10^(-ebn0(ii)/10));
    data7 = comb2(data6,zeros(size(data6)),attn);
b=2;
for jj=1:user
    for j0=1:b
         code0(jj,:)=delay2(code(2+jj-1,:),zeros(1,m),m,tau(j0));
         data8(j0,:)=r2(j0).*data7(jj,:);  
         data9(j0,:)=despread(data8(j0,:),zeros(size(data8)),code0(jj,:));       % despreading
    end
    if b==1
    data10(jj,:)=data9;
    else
    data10(jj,:)=sum(data9); 
    end
end
% data10=despread(data7,zeros(size(data7)),code(2:2+user-1,:));
    demodata=data10>0;
    
%************************** Bit Error Rate (BER) ***************************
    noe2 = sum(sum(abs(data(:,2:nd-1)-demodata(:,2:nd-1))));
    nod2 = (nd-2)*user;
    noe  = noe + noe2;
    nod  = nod + nod2;    
end
%******************************** Data file ********************************

ber(ii) = noe / nod;
fprintf('%d\t%d\t%d\t%e\n',ebn0(ii),noe,nod,ber(ii));                   % fprintf: built in function
end
%******************************** end of file ********************************
semilogy(ebn0,ber);
% 0	1217	32000	3.803125e-002
% 1	1025	32000	3.203125e-002
% 2	781	32000	2.440625e-002
% 3	600	32000	1.875000e-002
% 4	430	32000	1.343750e-002
% 5	280	32000	8.750000e-003
% 6	221	32000	6.906250e-003
% 7	115	32000	3.593750e-003
% 8	54	32000	1.687500e-003

⌨️ 快捷键说明

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