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

📄 apkpskqam.m

📁 本程序主要分析了三种调制方式对放大器非线性的敏感度
💻 M
📖 第 1 页 / 共 2 页
字号:
        elseif q_psk(n)<=13*pi/16&q_psk(n)>11*pi/16
            x_depsk(n)=s_psk(6);
        elseif q_psk(n)<=15*pi/16&q_psk(n)>13*pi/16
            x_depsk(n)=s_psk(7);
        elseif q_psk(n)<=16*pi/16&q_psk(n)>15*pi/16
            x_depsk(n)=s_psk(8);
        elseif q_psk(n)<=-15*pi/16&q_psk(n)>-16*pi/16
            x_depsk(n)=s_psk(8);
        elseif q_psk(n)<=-13*pi/16&q_psk(n)>-15*pi/16
            x_depsk(n)=s_psk(9);
        elseif q_psk(n)<=-11*pi/16&q_psk(n)>-13*pi/16
            x_depsk(n)=s_psk(10);
        elseif q_psk(n)<=-9*pi/16&q_psk(n)>-11*pi/16
            x_depsk(n)=s_psk(11);
        elseif q_psk(n)<=-7*pi/16&q_psk(n)>-9*pi/16
            x_depsk(n)=s_psk(12);
        elseif q_psk(n)<=-5*pi/16&q_psk(n)>-7*pi/16
            x_depsk(n)=s_psk(13);
        elseif q_psk(n)<=-3*pi/16&q_psk(n)>-5*pi/16
            x_depsk(n)=s_psk(14);
        elseif q_psk(n)<=-1*pi/16&q_psk(n)>-3*pi/16
            x_depsk(n)=s_psk(15);
        else
            x_depsk(n)=s_psk(16);
        end
    end
    [num,rt]=symerr(x_psk,x_depsk);
    ber_pskhpa(i)=rt;
    %加入预失真
    A=[zeros(2,N);ones(1,N);zeros(5,N)];
T=[0.2,0,0,0,0,0,0,0;
   0,0.2,0,0,0,0,0,0;
   0,0,0.2,0,0,0,0,0;
   0,0,0,0.2,0,0,0,0;
   0,0,0,0,0.2,0,0,0;
   0,0,0,0,0,0.2,0,0;
   0,0,0,0,0,0,0.2,0;
   0,0,0,0,0,0,0,0.2];
l1=0.6;l2=1;
w=x_psknoisy;
y=x_psknoisy;
y1=x_psknoisy;
z=x_psknoisy;
for n=3:N
    Q(n,:)=[-y(n-1),-y(n-2),w(n),abs(w(n))^2*w(n),abs(w(n))^4*w(n),abs(w(n))^6*w(n),abs(w(n))^8*w(n),abs(w(n))^10*w(n)];
    y(n)=Q(n,:)*A(:,n-1);
    z(n)=saleh(y(n));
    Q1(n,:)=[-y1(n-1),-y1(n-2),z(n),abs(z(n))^2*z(n),abs(z(n))^4*z(n),abs(z(n))^6*z(n),abs(z(n))^8*z(n),abs(z(n))^10*z(n)];
    y1(n)=Q1(n,:)*A(:,n-1);
    e(n)=(y(n)-y1(n))/(1+Q1(n,:)*T*Q1(n,:)');
    A(:,n)=A(:,n-1)+T*Q1(n,:)'*e(n);
    T=1/l1*(T-l2*T*Q1(n,:)'*Q1(n,:)*T/(l1+l2*Q1(n,:)*T*Q1(n,:)'));
end
q_psk=angle(z);
    for n=1:N
        if q_psk(n)<=3*pi/16&q_psk(n)>1*pi/16
            x_depsk(n)=s_psk(1);
        elseif q_psk(n)<=5*pi/16&q_psk(n)>3*pi/16
            x_depsk(n)=s_psk(2);
        elseif q_psk(n)<=7*pi/16&q_psk(n)>5*pi/16
            x_depsk(n)=s_psk(3);
        elseif q_psk(n)<=9*pi/16&q_psk(n)>7*pi/16
            x_depsk(n)=s_psk(4);
        elseif q_psk(n)<=11*pi/16&q_psk(n)>9*pi/16
            x_depsk(n)=s_psk(5);
        elseif q_psk(n)<=13*pi/16&q_psk(n)>11*pi/16
            x_depsk(n)=s_psk(6);
        elseif q_psk(n)<=15*pi/16&q_psk(n)>13*pi/16
            x_depsk(n)=s_psk(7);
        elseif q_psk(n)<=16*pi/16&q_psk(n)>15*pi/16
            x_depsk(n)=s_psk(8);
        elseif q_psk(n)<=-15*pi/16&q_psk(n)>-16*pi/16
            x_depsk(n)=s_psk(8);
        elseif q_psk(n)<=-13*pi/16&q_psk(n)>-15*pi/16
            x_depsk(n)=s_psk(9);
        elseif q_psk(n)<=-11*pi/16&q_psk(n)>-13*pi/16
            x_depsk(n)=s_psk(10);
        elseif q_psk(n)<=-9*pi/16&q_psk(n)>-11*pi/16
            x_depsk(n)=s_psk(11);
        elseif q_psk(n)<=-7*pi/16&q_psk(n)>-9*pi/16
            x_depsk(n)=s_psk(12);
        elseif q_psk(n)<=-5*pi/16&q_psk(n)>-7*pi/16
            x_depsk(n)=s_psk(13);
        elseif q_psk(n)<=-3*pi/16&q_psk(n)>-5*pi/16
            x_depsk(n)=s_psk(14);
        elseif q_psk(n)<=-1*pi/16&q_psk(n)>-3*pi/16
            x_depsk(n)=s_psk(15);
        else
            x_depsk(n)=s_psk(16);
        end
    end
    [num,rt]=symerr(x_psk(50:N),x_depsk(50:N));
    ber_pskhpapd(i)=rt;
end
n=1:30;
figure(4);
semilogy(n,ber_psk,'-bd',n,ber_pskhpa,'-rd',n,ber_pskhpapd,'-g*');
legend('理想状况','only HPA','HPA+Predisyortion',3); 
title('PSK信噪比与误码率的关系曲线');
grid;
%%%%%%%%%%%%%%%%%%%%%  16qam信号处理模块   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
x1=(fix(4*rand(1,N))*2-3)/3*R*beta;
x2=(fix(4*rand(1,N))*2-3)/3*R*beta;
x_qam=x1+v*x2;
d=R*beta*2/3;
figure(5);
plot(real(x_qam),imag(x_qam),'.');title('16QAM信号星座图');grid;
for i=1:30
    
    x_qamnoisy=awgn(x_qam,i,'measured');        % 加入噪声
    xi=real(x_qamnoisy);
    xq=imag(x_qamnoisy);
    for n=1:N
        if xi(n)<=d&xi(n)>0
            if xq(n)<=d&xq(n)>0
                x_deqam(n)=d/2+v*d/2; 
            elseif xq(n)>d
                x_deqam(n)=d/2+v*d*3/2; 
            elseif xq(n)>-d&xq(n)<=0
                x_deqam(n)=d/2-v*d/2;
            else  x_deqam(n)=d/2-v*d*3/2;
            end
        elseif xi(n)>d
             if xq(n)<=d&xq(n)>0
                x_deqam(n)=3*d/2+v*d/2; 
            elseif xq(n)>d
                x_deqam(n)=3*d/2+v*d*3/2; 
            elseif xq(n)>-d&xq(n)<=0
                x_deqam(n)=3*d/2-v*d/2;
            else  x_deqam(n)=3*d/2-v*d*3/2;
            end
        elseif xi(n)<=0&xi(n)>-d
             if xq(n)<=d&xq(n)>0
                x_deqam(n)=-d/2+v*d/2; 
            elseif xq(n)>d
                x_deqam(n)=-d/2+v*d*3/2; 
            elseif xq(n)>-d&xq(n)<=0
                x_deqam(n)=-d/2-v*d/2;
            else  x_deqam(n)=-d/2-v*d*3/2;
            end
        else 
            if xq(n)<=d&xq(n)>0
                x_deqam(n)=-3*d/2+v*d/2; 
            elseif xq(n)>d
                x_deqam(n)=-3*d/2+v*d*3/2; 
            elseif xq(n)>-d&xq(n)<=0
                x_deqam(n)=-3*d/2-v*d/2;
            else  x_deqam(n)=-3*d/2-v*d*3/2;
            end
        end
    end
    [num,rt]=symerr(x_qam,x_deqam);
    ber_qam(i)=rt;

    %%%%%%%%%%% 通过放大器
    for n=1:N
        x_qamhpa(n)=saleh(x_qamnoisy(n))/ratio;
    end
    xi=real(x_qamhpa);
    xq=imag(x_qamhpa);
    for n=1:N
        if xi(n)<=d&xi(n)>0
            if xq(n)<=d&xq(n)>0
                x_deqam(n)=d/2+v*d/2; 
            elseif xq(n)>d
                x_deqam(n)=d/2+v*d*3/2; 
            elseif xq(n)>-d&xq(n)<=0
                x_deqam(n)=d/2-v*d/2;
            else  x_deqam(n)=d/2-v*d*3/2;
            end
        elseif xi(n)>d
             if xq(n)<=d&xq(n)>0
                x_deqam(n)=3*d/2+v*d/2; 
            elseif xq(n)>d
                x_deqam(n)=3*d/2+v*d*3/2; 
            elseif xq(n)>-d&xq(n)<=0
                x_deqam(n)=3*d/2-v*d/2;
            else  x_deqam(n)=3*d/2-v*d*3/2;
            end
        elseif xi(n)<=0&xi(n)>-d
             if xq(n)<=d&xq(n)>0
                x_deqam(n)=-d/2+v*d/2; 
            elseif xq(n)>d
                x_deqam(n)=-d/2+v*d*3/2; 
            elseif xq(n)>-d&xq(n)<=0
                x_deqam(n)=-d/2-v*d/2;
            else  x_deqam(n)=-d/2-v*d*3/2;
            end
        else 
            if xq(n)<=d&xq(n)>0
                x_deqam(n)=-3*d/2+v*d/2; 
            elseif xq(n)>d
                x_deqam(n)=-3*d/2+v*d*3/2; 
            elseif xq(n)>-d&xq(n)<=0
                x_deqam(n)=-3*d/2-v*d/2;
            else  x_deqam(n)=-3*d/2-v*d*3/2;
            end
        end
    end
    [num,rt]=symerr(x_qam,x_deqam);
    ber_qamhpa(i)=rt;
    %%%%%%%%  通过预失真器
     A=[zeros(2,N);ones(1,N);zeros(5,N)];
T=[0.2,0,0,0,0,0,0,0;
   0,0.2,0,0,0,0,0,0;
   0,0,0.2,0,0,0,0,0;
   0,0,0,0.2,0,0,0,0;
   0,0,0,0,0.2,0,0,0;
   0,0,0,0,0,0.2,0,0;
   0,0,0,0,0,0,0.2,0;
   0,0,0,0,0,0,0,0.2];
l1=0.6;l2=1;
w=x_qamnoisy;
y=x_qamnoisy;
y1=x_qamnoisy;
z=x_qamnoisy;
for n=3:N
    Q(n,:)=[-y(n-1),-y(n-2),w(n),abs(w(n))^2*w(n),abs(w(n))^4*w(n),abs(w(n))^6*w(n),abs(w(n))^8*w(n),abs(w(n))^10*w(n)];
    y(n)=Q(n,:)*A(:,n-1);
    z(n)=saleh(y(n));
    Q1(n,:)=[-y1(n-1),-y1(n-2),z(n),abs(z(n))^2*z(n),abs(z(n))^4*z(n),abs(z(n))^6*z(n),abs(z(n))^8*z(n),abs(z(n))^10*z(n)];
    y1(n)=Q1(n,:)*A(:,n-1);
    e(n)=(y(n)-y1(n))/(1+Q1(n,:)*T*Q1(n,:)');
    A(:,n)=A(:,n-1)+T*Q1(n,:)'*e(n);
    T=1/l1*(T-l2*T*Q1(n,:)'*Q1(n,:)*T/(l1+l2*Q1(n,:)*T*Q1(n,:)'));
end
      xi=real(z);
    xq=imag(z);
    for n=1:N
        if xi(n)<=d&xi(n)>0
            if xq(n)<=d&xq(n)>0
                x_deqam(n)=d/2+v*d/2; 
            elseif xq(n)>d
                x_deqam(n)=d/2+v*d*3/2; 
            elseif xq(n)>-d&xq(n)<=0
                x_deqam(n)=d/2-v*d/2;
            else  x_deqam(n)=d/2-v*d*3/2;
            end
        elseif xi(n)>d
             if xq(n)<=d&xq(n)>0
                x_deqam(n)=3*d/2+v*d/2; 
            elseif xq(n)>d
                x_deqam(n)=3*d/2+v*d*3/2; 
            elseif xq(n)>-d&xq(n)<=0
                x_deqam(n)=3*d/2-v*d/2;
            else  x_deqam(n)=3*d/2-v*d*3/2;
            end
        elseif xi(n)<=0&xi(n)>-d
             if xq(n)<=d&xq(n)>0
                x_deqam(n)=-d/2+v*d/2; 
            elseif xq(n)>d
                x_deqam(n)=-d/2+v*d*3/2; 
            elseif xq(n)>-d&xq(n)<=0
                x_deqam(n)=-d/2-v*d/2;
            else  x_deqam(n)=-d/2-v*d*3/2;
            end
        else 
            if xq(n)<=d&xq(n)>0
                x_deqam(n)=-3*d/2+v*d/2; 
            elseif xq(n)>d
                x_deqam(n)=-3*d/2+v*d*3/2; 
            elseif xq(n)>-d&xq(n)<=0
                x_deqam(n)=-3*d/2-v*d/2;
            else  x_deqam(n)=-3*d/2-v*d*3/2;
            end
        end
    end
    [num,rt]=symerr(x_qam(30:N),x_deqam(30:N));
    ber_qamhpapd(i)=rt;
end
n=1:30;
figure(6);
semilogy(n,ber_qam,'-bd',n,ber_qamhpa,'-rd',n,ber_qamhpapd,'-g*');
legend('理想状况','only HPA','HPA+Predisyortion',3); 
title('QAM信噪比与误码率的关系曲线');
grid;
n=1:30;
figure(7);
semilogy(n,ber_apkhpa,'-bd',n,ber_pskhpa,'-ro',n,ber_qamhpa,'-g*');
legend('16APK信号','16PSK信号','16QAM信号',3); 
title('信噪比与误码率关系曲线(放大器对信号影响)');
xlabel('SNR(dB)');
ylabel('误码率');
grid;

⌨️ 快捷键说明

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