?? tdd-cdma downlink using joint transmission.m
字號:
clear all;
close all;
D=randint(5,5);
d11=D(:,1)';
d12=D(:,2)';
d13=D(:,3)';
d14=D(:,4)';
d15=D(:,5)';
msg=[d11 d12 d13 d14 d15];
D1=pskmod(D,2);
d1=D1(:,1)';
d2=D1(:,2)';
d3=D1(:,3)';
d4=D1(:,4)';
d5=D1(:,5)';
d=[d1 d2 d3 d4 d5]';
%//TRANSMITTED SIGNAL\\
%//H value\\
h=randsrc(5,11)';
h1=h(:,1);
%for user 1
for i=1:90
for j=1:80
y = i-j;
if y<0
H1(i,j) = 0;
elseif y >10
H1(i,j) = 0;
else
H1(i,j) = h1(y+1);
end
end
end
%for user 2
for i=1:90
for j=1:80
h2=h(:,2);
% plot(h2);
% title('h2 value');
y1 = i-j;
if y1<0
H2(i,j) = 0;
elseif y1 >10
H2(i,j) = 0;
else
H2(i,j) = h2(y1+1);
end
end
end
%for user 3
for i=1:90
for j=1:80
h3=h(:,3);
% plot(h3);
% title('h3 value');
y = i-j;
if y<0
H3(i,j) = 0;
elseif y >10
H3(i,j) = 0;
else
H3(i,j) = h3(y+1);
end
end
end
%for user 4
for i=1:90
for j=1:80
h4=h(:,4);
% plot(h4);
% title('h4 value');
y = i-j;
if y<0
H4(i,j) = 0;
elseif y >10
H4(i,j) = 0;
else
H4(i,j) = h4(y+1);
end
end
end
%for user 5
for i=1:90
for j=1:80
h5=h(:,5);
% plot(h5);
% title('h5 value');
y = i-j;
if y<0
H5(i,j) = 0;
elseif y >10
H5(i,j) = 0;
else
H5(i,j) = h5(y+1);
end
end
end
% disp (h);
% disp (H1);
% disp (H2);
% disp (H3);
% disp (H4);
% disp (H5);
H=[H1' H2' H3' H4' H5']';
Htr=H';
%// B value\\
u=randsrc(5,16)';
% plot(u)
% title('u value')
q=16;
for i=1:80
for j=1:5
%for user1
a1=u(:,1);
t = i - (q*(j-1)) -1;
if t<0
a(i,j) = 0;
elseif t >15
a(i,j) = 0;
else
a(i,j) = a1(t+1);
end
end
end
%for user 2
for i=1:80
for j=1:5
a2=u(:,2);
t1 = i - (q*(j-1)) -1;
if t1<0
b(i,j) = 0;
elseif t1 >15
b(i,j) = 0;
else
b(i,j) = a2(t1+1);
end
end
end
%for user 3
for i=1:80
for j=1:5
a3=u(:,3);
t = i - (q*(j-1)) -1;
if t<0
g(i,j) = 0;
elseif t >15
g(i,j) = 0;
else
g(i,j) = a3(t+1);
end
end
end
%for user 4
for i=1:80
for j=1:5
a4=u(:,4);
t = i - (q*(j-1)) -1;
if t<0
e(i,j) = 0;
elseif t >15
e(i,j) = 0;
else
e(i,j) = a4(t+1);
end
end
end
%for user 5
for i=1:80
for j=1:5
a5=u(:,5);
t = i - (q*(j-1)) -1;
if t<0
f(i,j) = 0;
elseif t >15
f(i,j) = 0;
else
f(i,j) = a5(t+1);
end
end
end
%disp(u);
%disp(a);
%disp(b);
%disp(g);
%disp(e);
%disp(f);
c=[a b g e f];
c1=c(:,1:5)';
c2=c(:,6:10)';
c3=c(:,11:15)';
c4=c(:,16:20)';
c5=c(:,21:25)';
%//ZEROMATRIX\\
o=zeros(5,10);
B1=cat(2,c1,o)';
B2=cat(2,c2,o)';
B3=cat(2,c3,o)';
B4=cat(2,c4,o)';
B5=cat(2,c5,o)';
B=blkdiag(B1,B2,B3,B4,B5);
Btr=B';
mul=Btr*H*Htr*B;
BHmul=inv(mul);
S=Htr*B*BHmul*d;
%//received signal\\
Hs1=H1*S;
Hs2=H2*S;
Hs3=H3*S;
Hs4=H4*S;
Hs5=H5*S;
% E1=awgn(Hs1,snr);
% E2=awgn(Hs2,snr);
% E3=awgn(Hs3,snr);
% E4=awgn(Hs4,snr);
% E5=awgn(Hs5,snr);
% E=[E1 E2 E3 E4 E5];
% %//RECONSTRUCTED SIGNAL\\
% dk1=B1'*E1;
% dk2=B2'*E2;
% dk3=B3'*E3;
% dk4=B4'*E4;
% dk5=B5'*E5;
% DK1=pskdemod(dk1,2);
% DK2=pskdemod(dk2,2);
% DK3=pskdemod(dk3,2);
% DK4=pskdemod(dk4,2);
% DK5=pskdemod(dk5,2);
% x=[DK1 DK2 DK3 DK4 DK5];
% decodmsg=[DK1' DK2' DK3' DK4' DK5'];
%
% Set up initial parameters.
EbNomin = 0; EbNomax = 10; % EbNo range, in dB
numerrmin = 5; % Compute BER only after 5 errors occur.5
EbNovec = EbNomin:1:EbNomax; % Vector of EbNo values
numEbNos = length(EbNovec); % Number of EbNo values
% Preallocate space for certain data.
ber = zeros(1,numEbNos); % BER values
intv = cell(1,numEbNos); % Cell array of confidence intervals
% Loop over the vector of EbNo values.
for jj = 1:numEbNos
EbNo = EbNovec(jj);
snr = EbNo; % Because of binary modulation
E1=awgn(Hs1,snr);
E2=awgn(Hs2,snr);
E3=awgn(Hs3,snr);
E4=awgn(Hs4,snr);
E5=awgn(Hs5,snr);
E=[E1 E2 E3 E4 E5];
%//RECONSTRUCTED SIGNAL\\
dk1=B1'*E1;
dk2=B2'*E2;
dk3=B3'*E3;
dk4=B4'*E4;
dk5=B5'*E5;
DK1=pskdemod(dk1,2);
DK2=pskdemod(dk2,2);
DK3=pskdemod(dk3,2);
DK4=pskdemod(dk4,2);
DK5=pskdemod(dk5,2);
x=[DK1 DK2 DK3 DK4 DK5];
decodmsg=[DK1' DK2' DK3' DK4' DK5'];
ntrials = 0; % Number of passes through the while loop below
numerr = 0; % Number of errors for this EbNo value
% Simulate until numerrmin errors occur.
while (numerr < numerrmin)
msg=[d11 d12 d13 d14 d15]; % Generate message sequence.
decodmsg =[DK1' DK2' DK3' DK4' DK5']; % Demodulate.
newerrs = biterr(msg,decodmsg); % Errors in this trial
% disp('newerr');
% disp(newerrs);
numerr = numerr + newerrs; % Total errors for this EbNo value
% disp('numerr');
% disp(numerr);
ntrials = ntrials + 1; % Update trial index.
end
% Error rate and 98% confidence interval for this EbNo value
[ber(jj), intv1] = berconfint(numerr,(ntrials * 25),.98);
intv{jj} = intv1; % Store in cell array for later use.
disp(['EbNo = ' num2str(EbNo) ' dB, ' num2str(numerr) ...
' errors, BER = ' num2str(ber(jj))])
end
% Use BERFIT to plot the best fitted curve,
% interpolating to get a smooth plot.
fitEbNo = EbNomin:0.25:EbNomax; % Interpolation values
berfit(EbNovec,ber,fitEbNo);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -