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

📄 ber_23_ml_zf_bpsk.m

📁 MIMO 2*3系统ML和ZF检测的BER性能仿真
💻 M
字号:
clc;
clear;
tic

Frame_Length=160;  %The length of each frame
Frame_number=40;    %The number of frames
Meantimes=20;      %The times of mean
Testnum=15;        %The times of test  
error1=zeros(Meantimes,Testnum); 
error2=zeros(Meantimes,Testnum);

H=[0.5 0.25;
    0.125 0.5;
    0.25 0.125];
[N,B]=size(H);
h1=H(1,:);
h2=H(2,:);
h3=H(3,:);
for times=1:Meantimes,
    snr_in_db=0;
    for testcount=1:Testnum,
        snr_in_db=2*(testcount-1); 
        SNR=10^(snr_in_db/10);
        for Frame_count=1:Frame_number
         %*************************************************************************************%
         % 产生高斯噪声                                                                         %
         %*************************************************************************************%     
           L=Frame_Length;
           noise1=randn(1, L/2)/(sqrt(2*SNR)); 
           noise2=randn(1, L/2)/(sqrt(2*SNR));
           noise3=randn(1, L/2)/(sqrt(2*SNR)); 
        %*************************************************************************************%
        % 编码算法                                                              %
        %*************************************************************************************%
           input_bits=randint(1,L); 
            
           % BPSK调制
           BPSK = [-1 1];    % refer to Table82 on page21 of IEEE802.11a
           input_bits1 = BPSK(input_bits+1);
            
           send=reshape(input_bits1,B,L/B);

         %接收信号   
            R1=h1*send+noise1;
            R2=h2*send+noise2;
            R3=h3*send+noise3;
            
%             R1=h1*send;
%             R2=h2*send;
       %*************************************************************************************%
       % 接收端解码算法                                                              %
       %*************************************************************************************%         
            % ML译码
            output_bits1=decode_ML23_BPSK(H,L/B,R1,R2,R3); 
            
            % ZF译码
            output_bits2=decode_ZF23_BPSK(H,L/B,R1,R2,R3);     
           
       %*************************************************************************************%
       % 误码率统计                                                                          %
       %*************************************************************************************%    
            errornumber1=output_bits1-input_bits;
            for q=1:Frame_Length,
                if errornumber1(1,q)~=0
                    error1(times,testcount)=error1(times,testcount)+1;
                end
            end
            
            errornumber2=output_bits2-input_bits;
            for q=1:Frame_Length,
                if errornumber2(1,q)~=0
                    error2(times,testcount)=error2(times,testcount)+1;
                end
            end
            
        end
    end  
end

ber=mean(error1)/(Frame_Length*Frame_number);
horiaxis=[0:2:2*(Testnum-1)];
semilogy(horiaxis,ber,'*-');
xlabel('SNR(dB)');
ylabel('Bit Error Rate');
title('ML and ZF 2*3 BPSK');
grid;
hold on;
ber2=mean(error2)/(Frame_Length*Frame_number);
horiaxis=[0:2:2*(Testnum-1)];
semilogy(horiaxis,ber2,'o-');

legend('ML','ZF')
toc

⌨️ 快捷键说明

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