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

📄 jafarkhani.m

📁 Jafarkhani的差分空时分组码matlab程序
💻 M
字号:
function   DSTBC 
    Nt=2;%发射天线数为2
    Nr=1;%接收天线数为1
    min_snr=0;%最小的信噪设定为15
    max_snr=10;%最大的信噪设定为15
    symbol_per_frame=130;%每一帧的符号数为130个
    tot_frame_tx=zeros(1,(max_snr-min_snr)/2+1);%在每一个snr下传送的帧的个数
    tot_err_bit=zeros(1,(max_snr-min_snr)/2+1);%在每一个snr下bit错误的个数
   for snr=min_snr:2:max_snr % snr循环
       display(snr);
       for i=1:1000        % 在某一snr下多次循环     
             tot_frame_tx((snr-min_snr)/2+1) = tot_frame_tx((snr-min_snr)/2+1)+1;%计算传送的帧的个数
             bit_sequence = rand(1,symbol_per_frame)>0.5;        %生成伪随机二进制待发送序列
             mapping_sequence =Mapping(bit_sequence); %二进制信道与QPSK信号的转换
            sig = sqrt(1/(10^(snr/10)));  %归一化的噪声能量    
              addtional_gaussian_noise =sig * (randn(Nr,Nt,symbol_per_frame+1) + j*randn(Nr,Nt,symbol_per_frame+1))/sqrt(2);%生成加性高斯噪声
            H=RayleighCH(Nr,Nt); %生成具有瑞利分布特性的信道衰落系数
              X1=[mapping_sequence(1) -conj(mapping_sequence(2)); mapping_sequence(2) conj(mapping_sequence(1))];  % 第一个参考信号                    
              R1=H*X1 + addtional_gaussian_noise(:,:,symbol_per_frame+1);   
            for k=3:2:symbol_per_frame+1      
                X=[mapping_sequence(k)  -conj(mapping_sequence(k+1));  mapping_sequence(k+1)  conj(mapping_sequence(k))]; %接收信号
                R=H*X+ addtional_gaussian_noise(:,:,k-2);        
                r1=R(1)*conj(R1(1))+conj(R(2))*R1(2);
                r2=R(1)*conj(R1(2))-conj(R(2))*R1(1);
                d2=[r1,r2];
                dh = [1 0;0 1; 0 -1;-1 0];
                D1=abs([r1 r2;r1 r2;r1 r2;r1 r2;]-dh);
                for m=1:4
                  distance(m)=abs(D1(m,1))^2+ abs(D1(m,2))^2;
                end
                [minnumber1 position1]=min(distance);%求出最小的距离
                c1=dh(position1,1);
                c2=dh(position1,2);
                p=decoding(c1,c2);
               x1=p(1);
               x2=p(2);
               if (bit_sequence(k-2)~=x1)%计算bit错误的个数
                   tot_err_bit((snr-min_snr)/2+1)=tot_err_bit((snr-min_snr)/2+1)+1;
                end
                 if (bit_sequence(k-1)~=x2)
                     tot_err_bit((snr-min_snr)/2+1)=tot_err_bit((snr-min_snr)/2+1)+1;
                end  
              R1=R;% 前一个接收到参考信号 
            end
        end
    end        
    %在不同信噪比条件下,求系统SER和BER
    ber_snr=tot_err_bit./(tot_frame_tx * symbol_per_frame);
    figure(1);
   semilogy(min_snr:2:max_snr,ber_snr,'-o');
    grid
    xlabel('SNR');
    ylabel('Bit Error Ratio');
   

⌨️ 快捷键说明

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