sttc_code.m

来自「STTC和OFDM编程」· M 代码 · 共 64 行

M
64
字号
function output=STTC_code(N)
%------------------------------------------------------
%空时格状码的编码
%------------------------------------------------------
Frame=N;
temp1=[round(rand(1,Frame)),0];
temp2=[round(rand(1,Frame)),0];    
state=zeros(1,Frame+2); 
send1=zeros(1,Frame+1);
send2=zeros(1,Frame+1);
state(1)=0;
    for i=2:1:Frame+2
        if    temp1(i-1)==0 & temp2(i-1)==0 
            if       state(i-1)==0
                state(i)=0;send1(i-1)=1*sqrt(1/2); send2(i-1)=1*sqrt(1/2);
            elseif   state(i-1)==1
                state(i)=0;send1(i-1)=j*sqrt(1/2); send2(i-1)=1*sqrt(1/2);
            elseif   state(i-1)==2
                state(i)=0;send1(i-1)=-1*sqrt(1/2);send2(i-1)=1*sqrt(1/2);
            elseif state(i-1)==3     
                state(i)=0;send1(i-1)=-j*sqrt(1/2);send2(i-1)=1*sqrt(1/2);
            end
        elseif temp1(i-1)==0 & temp2(i-1)==1
            if     state(i-1)==0
                state(i)=1;send1(i-1)=1*sqrt(1/2);send2(i-1)=j*sqrt(1/2);
            elseif state(i-1)==1
                state(i)=1;send1(i-1)=j*sqrt(1/2);send2(i-1)=j*sqrt(1/2);
            elseif state(i-1)==2
                state(i)=1;send1(i-1)=-1*sqrt(1/2);send2(i-1)=j*sqrt(1/2);
            elseif state(i-1)==3  
                state(i)=1;send1(i-1)=-j*sqrt(1/2);send2(i-1)=j*sqrt(1/2);
            end
        elseif temp1(i-1)==1 & temp2(i-1)==0
            if  state(i-1)==0
                state(i)=2;send1(i-1)=1*sqrt(1/2);send2(i-1)=-1*sqrt(1/2);
            elseif state(i-1)==1
                state(i)=2;send1(i-1)=j*sqrt(1/2);send2(i-1)=-1*sqrt(1/2);
            elseif state(i-1)==2
                state(i)=2;send1(i-1)=-1*sqrt(1/2);send2(i-1)=-1*sqrt(1/2);
            elseif state(i-1)==3  
                state(i)=2;send1(i-1)=-j*sqrt(1/2);send2(i-1)=-1*sqrt(1/2);
            end
        elseif temp1(i-1)==1&temp2(i-1)==1 
            if  state(i-1)==0
                state(i)=3;send1(i-1)=1*sqrt(1/2);send2(i-1)=-j*sqrt(1/2);
            elseif state(i-1)==1
                state(i)=3;send1(i-1)=j*sqrt(1/2);send2(i-1)=-j*sqrt(1/2);
            elseif state(i-1)==2
                state(i)=3;send1(i-1)=-1*sqrt(1/2);send2(i-1)=-j*sqrt(1/2);
            elseif state(i-1)==3  
                state(i)=3;send1(i-1)=-j*sqrt(1/2);send2(i-1)=-j*sqrt(1/2);
            end
        end    
             
    end   
    State=state;
    output=[send1;send2];
    
   
    
        
        
 

⌨️ 快捷键说明

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