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

📄 tdd-cdma downlink using joint transmission.m

📁 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 + -