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

📄 convencuitrayt2.m

📁 根据TD-SCDMA系统的特点
💻 M
字号:
clear all ;
close all;

randn('state',sum(100*clock)); %reset the randn generator

 minTestLength=100000; % test length should at least reach this number
 maxTestLength=100000000; %test stops at this number 
% unitray matrix
matrix0=[1 1;1 exp(i*2*pi/64);1 exp(i*4*pi/64);1 exp(i*6*pi/64);1 exp(i*8*pi/64);1 exp(i*10*pi/64)] 
smatrix=diag(exp([i*2*pi/64 i*2*pi*18/64 i*2*pi*23/64 i*2*pi*39/64 i*2*pi*46/64 i*2*pi*57/64]));
Es=1;
Eb=Es;
index=1;
leg=3;
codegenerate=[4 3 7];
trellis=poly2trellis(leg,codegenerate);
tblen=2;

index=1;
for EbN0=1:15;
N0=10^(-EbN0/10)
noiseRoot0=sqrt(N0/2);
errorCount=0;
testCount=0;
% channeland noise




 while(1)
 h0=(randn(1)+j*randn(1))*sqrt(0.5); 
 h1=(randn(1)+j*randn(1))*sqrt(0.5); 
 
 noise=(randn(6,30)+j*randn(6,30))*noiseRoot0;
 source11=randint(1,60);

source=convenc(source11,trellis);% length=120

% source 
changesource=reshape(source,6,30);

dsource=zeros(6,30); % after decesion sign matrix

% spreadcode1=zeros(1,44);% spread array 

unitraymatrix=zeros(6,30);  % unitray modulate matrix
unitraymatrix1=zeros(6,30);

rmatrix=zeros(1,30);   % receive matrix

rsource=zeros(1,180);  % after despread  sign

index1=1;
for ii=1:30  % construct unitrary matrix
number(index1)=[32 16 8 4 2 1]*changesource(:,ii);
index1=index1+1;
end

for iii=1:30 % construct matrix
smatrix1=smatrix^number(iii)*matrix0;
unitraymatrix(:,iii)=unitraymatrix(:,iii)+smatrix1(:,1);
unitraymatrix1(:,iii)=unitraymatrix(:,iii)+smatrix(:,2);
end

% spreadcode1=[reshape(unitraymatrix,1,42) zeros(1,2)];% symbols frame 
 % s1=[reshape(unitraymatrix,1,120)];
% t1=(randn(1,44))+j*(randn(1,44));
% source1 =spreadcode1*WQ(1);
% x1 = ovsf(1)' * source1;                 % spreading
% s1 = x1.*(scramble'*ones(1,44));               

% t2=(randn(1,44))+j*(randn(1,44));
% source2 = t2*WQ(2);
% x2 = ovsf(2)' * source2;                 % spreading
% s2 = x2.*(scramble'*ones(1,44));        


 
s1=h0*unitraymatrix+noise;
s2=h1*unitraymatrix1+noise;
% s=s1+s2;

% y1 = reshape(s,1,44*16) ;
%y = y + 1/sqrt(2)*( randn(size(y)) + j*randn(size(y)))*5;
% r = reshape(y1,16,44);

% y2 = reshape(s,1,44*16) ;
% y = y + 1/sqrt(2)*( randn(size(y)) + j*randn(size(y)))*5;
% r2 = reshape(y2,16,44);

% z1 = ones(44, 1)*scramble.*(ones(44, 1)*ovsf(1))*r;
% rs1 = reshape(diag(z1)/16,1,44)./WQ(1);

%z11 = ones(44, 1)*scramble.*(ones(44, 1)*ovsf(1))*r2;
% rs11 = reshape(diag(z1)/16,1,44)./WQ(1);


 % z2 = ones(44, 1)*scramble.*(ones(44, 1)*ovsf(2))*r;
 % rs2 = reshape(diag(z2)/16,1,44)./WQ(2);
 
 % for mmm=1:42
   %   rematrix(mmm)=rs1(mmm);
   % end
 


for nn=1:30
    dmatrix=zeros(6,2);
    dmatrix(:,1)=s1(:,nn);
    dmatrix(:,2)=s2(:,nn);
    n=0;
    for nnn=0:63
     TR=trace( dmatrix'*(smatrix^nnn*matrix0)*(smatrix^nnn*matrix0)'*dmatrix);
    % max angle
        if TR>n
         n=TR;
         length=nnn;
     end
 end
 dst=de2bi(length,6,'left-msb');
 dsource(:,nn)=dsource(:,nn)+dst';
end
rsource=reshape(dsource,1,180);

rsource1=vitdec(rsource,trellis,tblen,'trunc','hard');

err=xor(rsource1,source11);
        errorCount=errorCount+sum(err);
        testCount=testCount+60;
         if(testCount<minTestLength)
            continue;
        end
        tempBER=errorCount/testCount;

         %test if the test length is large enough
        if(tempBER>0)
            thresholdTestLength=100/(tempBER);
        else
            thresholdTestLength=maxTestLength;
        end
        
        %Stop current EbN0 test when the test threshold is reached
        if(testCount>=thresholdTestLength)
            myTestLength(index)=testCount;
            Es=Eb/2;
            myEsN0(index)=10*log10(Es/N0)
            myEbN0(index)=EbN0
            myBER(index)=tempBER
            index=index+1;
            break;
        end
    end
end

%Draw curves for the results,Eb/N0
figure(1)
semilogy(myEbN0,myBER,'*-');
xlabel('Eb/N0 in dB');
ylabel('bit error rate');
grid 

%Draw curves for the results, Es/N0
% figure(2)
% semilogy(myEsN0,myBER,'+-');
% xlabel('Es/N0 in dB');
% ylabel('bit error rate');
% grid 

 

⌨️ 快捷键说明

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