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

📄 ostbcfor16qam.m

📁 MIMO-有关差分编码,用matlab书写,
💻 M
字号:
function OSTBCfor16qam
    Nt=4;%发射天线数为4
    Nr=1;%接收天线数为1
    min_snr=5;
    max_snr=25;%最大的信噪设定为15
    symbol_per_frame=12;%每一帧的符号数为120个
    tot_frame_tx=zeros(1,(max_snr-min_snr)/2+1);
    tot_err_bit=zeros(1,(max_snr-min_snr)/2+1);
   for snr=min_snr:2:max_snr 
       display(snr);
           sig =sqrt(40/(10^(snr/10))); 
         for ii=1:10000
             tot_frame_tx((snr-min_snr)/2+1) = tot_frame_tx((snr-min_snr)/2+1)+1;
             bit_sequence=randint(1,symbol_per_frame ,16);  
             qpsk_sequence = dmodce(bit_sequence,1,1,'qask',16); %二进制信道与QPSK信号的转换
           %归一化的噪声能量       
            addtional_gaussian_noise =sig * (randn(Nr,2*Nt,symbol_per_frame) + j*randn(Nr,2*Nt,symbol_per_frame))/sqrt(2); %生成加性高斯噪声
            H=RayleighCH(Nr,Nt); %生成具有瑞利分布特性的信道衰落系数
            for k=1:4:symbol_per_frame-3
                X=[qpsk_sequence(k) -qpsk_sequence(k+1) -qpsk_sequence(k+2) -qpsk_sequence(k+3) conj(qpsk_sequence(k)) -conj(qpsk_sequence(k+1)) -conj(qpsk_sequence(k+2)) -conj(qpsk_sequence(k+3)); 
                   qpsk_sequence(k+1) qpsk_sequence(k) qpsk_sequence(k+3) -qpsk_sequence(k+2) conj(qpsk_sequence(k+1))  conj(qpsk_sequence(k)) conj(qpsk_sequence(k+3)) -conj(qpsk_sequence(k+2));
                   qpsk_sequence(k+2) -qpsk_sequence(k+3) qpsk_sequence(k) qpsk_sequence(k+1) conj(qpsk_sequence(k+2)) -conj(qpsk_sequence(k+3)) conj(qpsk_sequence(k)) conj(qpsk_sequence(k+1));
                   qpsk_sequence(k+3) qpsk_sequence(k+2) -qpsk_sequence(k+1) qpsk_sequence(k) conj(qpsk_sequence(k+3)) conj(qpsk_sequence(k+2)) -conj(qpsk_sequence(k+1)) conj(qpsk_sequence(k));];
                R=H*X+addtional_gaussian_noise(:,:,k);  %接收信号      
                x1=R(1,1)*conj(H(1,1))+R(1,2)*conj(H(1,2))+R(1,3)*conj(H(1,3))+R(1,4)*conj(H(1,4))+conj(R(1,5))*H(1,1)+conj(R(1,6))*H(1,2)+conj(R(1,7))*H(1,3)+conj(R(1,8))*H(1,4) ;   
                x2=R(1,1)*conj(H(1,2))-R(1,2)*conj(H(1,1))-R(1,3)*conj(H(1,4))+R(1,4)*conj(H(1,3))+conj(R(1,5))*H(1,2)-conj(R(1,6))*H(1,1)-conj(R(1,7))*H(1,4)+conj(R(1,8))*H(1,3) ;
                x3=R(1,1)*conj(H(1,3))+R(1,2)*conj(H(1,4))-R(1,3)*conj(H(1,1))-R(1,4)*conj(H(1,2))+conj(R(1,5))*H(1,3)+conj(R(1,6))*H(1,4)-conj(R(1,7))*H(1,1)-conj(R(1,8))*H(1,2);
                x4=R(1,1)*conj(H(1,4))-R(1,2)*conj(H(1,3))+R(1,3)*conj(H(1,2))-R(1,4)*conj(H(1,1))+conj(R(1,5))*H(1,4)-conj(R(1,6))*H(1,3)+conj(R(1,7))*H(1,2)-conj(R(1,8))*H(1,1);
                d=2*(abs(H(1,1))^2+abs(H(1,2))^2+abs(H(1,3))^2+abs(H(1,4))^2);
                dh = [1+j,-1+j,1-j,-1-j,3+j,-3+j,3-j,-3-j,1+3j,-1+3j,1-3j,-1-3j,3+3j,-3+3j,3-3j,-3-3j;];
                D1=abs(x1/d*ones(1,16)-dh).^2;
                [minnumber1 position1]=min(D1);%求出最小的距离
                X1=dh(position1);             %估计出x1的值
                D2=abs(x2/d*ones(1,16)-dh).^2;
                [minnumber1 position2]=min(D2);
                X2=dh(position2);
                D3=abs(x3/d*ones(1,16)-dh).^2;
                [minnumber1 position3]=min(D3);
                X3=dh(position3);
                D4=abs(x4/d*ones(1,16)-dh).^2;
                [minnumber1 position4]=min(D4);
                X4=dh(position4);
                if(X(1,1)~=X1)  
                    tot_err_bit((snr-min_snr)/2+1)=tot_err_bit((snr-min_snr)/2+1)+table(X(1,1),X1);
                end
                 if(X(2,1)~=X2) 
                      tot_err_bit((snr-min_snr)/2+1)=tot_err_bit((snr-min_snr)/2+1)+table(X(2,1),X2);  
                 end
                  if(X(3,1)~=X3)
                      tot_err_bit((snr-min_snr)/2+1)=tot_err_bit((snr-min_snr)/2+1)+table(X(3,1),X3);   
                 end
                  if(X(4,1)~=X4) 
                      tot_err_bit((snr-min_snr)/2+1)=tot_err_bit((snr-min_snr)/2+1)+table(X(4,1),X4);  
                 end
     
         
           end
        end
    end        
    %在不同信噪比条件下,求系统SER和BER
    ber_snr=tot_err_bit./(tot_frame_tx * symbol_per_frame*4);
    figure(1);
      semilogy(min_snr:2:max_snr,ber_snr,'-*');
    grid
    xlabel('SNR');
    ylabel('Bit Error Ratio');
 


⌨️ 快捷键说明

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