?? ds.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 + -