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

📄 psk8.m

📁 关于8PSK解的信噪比和调误码率的仿真程序
💻 M
字号:
%%---------- Clear -------------------%%
    clc
    clear
    Snr_dB = [ 1 4 8 10 12 14 16 17] ; % SNR in decibel
    N=30000;
    Bit_error = zeros(1,length(Snr_dB)) ;
%     Bit_error_amph = zeros(1,length(Snr_dB)) ;
    Frame_error = zeros(1,length(Snr_dB)) ;
    Sim_num_bound=10;
    FER_bound=10;
    for Snr_dB_index = 1:length(Snr_dB)
        Sim_num=0;
        while(1)
            Sim_num=Sim_num+1;
            b = randint( 1, N, 2) ; 
            N8psk=length(b);
            k=0;

            s8(0+1)=cos(pi/4)+j*sin(pi/4);
            s8(4+1)=j;
            s8(6+1)=-cos(pi/4)+j*sin(pi/4);
            s8(2+1)=-1;
            s8(3+1)=-s8(0+1);
            s8(7+1)=-s8(4+1);
            s8(5+1)=-s8(6+1);
            s8(1+1)=-s8(2+1);

            for i=1:3:N8psk
                k=k+1;
                b2d=b(i)*4+b(i+1)*2+b(i+2)*1;
                a(k)=s8(b2d+1);
            end
            
            r = awgn(a, Snr_dB(Snr_dB_index), 'measured') ; 
            
            M=length(r);
            
            for i=1:M
                e(i,:)=abs(r(i)-s8);
                [Y,I]=min(e(i,:));
                switch I
                    case 1
                        dec((i-1)*3+1:i*3)=[0 0 0];
                    case 2
                        dec((i-1)*3+1:i*3)=[0 0 1];
                    case 3
                        dec((i-1)*3+1:i*3)=[0 1 0];
                    case 4
                        dec((i-1)*3+1:i*3)=[0 1 1];
                    case 5
                        dec((i-1)*3+1:i*3)=[1 0 0];
                    case 6
                        dec((i-1)*3+1:i*3)=[1 0 1];
                    case 7
                        dec((i-1)*3+1:i*3)=[1 1 0];
                    case 8
                        dec((i-1)*3+1:i*3)=[1 1 1];    
                end
            end
            
            Bit_error(Snr_dB_index) = Bit_error(Snr_dB_index) + sum( b ~= dec);
            if( sum(b~=dec) > 0 )
                Frame_error(Snr_dB_index) = Frame_error(Snr_dB_index) + 1 ;
            end
            
%             b_dec_ap=perfect_ring(r);   
%             Bit_error_amph(Snr_dB_index) = Bit_error_amph(Snr_dB_index) + sum( b ~= b_dec_ap);
           
            if (Sim_num >= Sim_num_bound)
                if( (Frame_error(Snr_dB_index) >= FER_bound) )
                    break;
                end
            end
        end
        BER(Snr_dB_index) = Bit_error(Snr_dB_index)/(Sim_num*N)
%         BER_amph(Snr_dB_index) = Bit_error_amph(Snr_dB_index)/(Sim_num*N)
    end
            semilogy(Snr_dB,BER,'s-k');
            
            
            

⌨️ 快捷键说明

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