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

📄 sosttc2state.m

📁 信道编码程序
💻 M
字号:
    Nt=2;%发射天线数为2
    Nr=1;%接收天线数为1
    min_snr=10;
    max_snr=10;%最大的信噪设定
    interval=2;      % snr的间隔
    symbol_per_frame=65;%每一帧的符号数
    ave_power=2.0;
   times=1;
   kkk=1;
    tot_err_bit=zeros(1,(max_snr-min_snr)/2+1);
                      S(1,:,:)=[-1,-1;1 1;];
                      S(2,:,:)=[-1,1;1 -1;];
                 mapping=[0, 1;];
                for i=1:2,
                    state=mapping(i);
                        for k=1:2,
                             x2= mapping(k);
                               if [state x2]==[0 0]
                                  table(i, k, :)=[1, 1];  % [S状态  旋转角度]
                           elseif [state x2]==[0 1]
                                  table(i, k, :)=[2,-1];
                           elseif [state x2]==[1 0]
                                  table(i, k, :)=[2, 1];  
                           elseif [state x2]==[1 1]
                                  table(i, k, :)=[1, -1]; 
                              end;
                        end;
                    end;
                  
for snr=min_snr:interval:max_snr 
    display(snr);
        sigma =sqrt(ave_power/(2*10^(snr/10))); 
            error_number=0;
        for repeat=1:times      
            % Generate random data  
          x1=randint(1,symbol_per_frame,4); 
          x2=randint(1,symbol_per_frame,4); 
          x2(symbol_per_frame)=0;
             H=RayleighCH(Nr,Nt); %生成具有瑞利分布特性的信道衰落系数        
            [codeword,sita]=encoding(symbol_per_frame, x1, x2);
            % BPSK mapping
            [symb1, symb2]=BPSKmapping(symbol_per_frame, codeword);    
            % Space-Time transmitting    
            for i=1:symbol_per_frame,
                p=exp(j*sita(i));
                C=[p*symb1(i) -p*conj(symb2(i)); symb2(i)  conj(symb1(i));];   
                    r(i,:)=H*C+sigma*(randn(Nr,Nt)+j*randn(Nr,Nt));
            end; 
               %path matric 
            [state]=vtb_decoding(symbol_per_frame,H, r,table);
             
            %ML decoding 
            x=1;
            for i=symbol_per_frame:-1:1,
                decoding_x1(i)=state(i, x, 2);
                decoding_x2(i)=state(i, x, 4);
                x=state(i, x, 1);
            end;
            % FER( ofdm symbol error ratio ) calculation
            if (sum(abs(decoding_x1-x1))+sum(abs(decoding_x2-x2)))~=0
                    error_number=error_number+1;
                end;
        end; %for repeat
   
   FER(kkk)=error_number/(times);
   display(FER(kkk));
   kkk=kkk+1;
end; %for SNR_in_dB

title('space-time trellis codes');
ylabel('FER  (Frame error ratio)');
semilogy(min_snr:interval:max_snr, FER); 

⌨️ 快捷键说明

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