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

📄 apkpskqam.m

📁 本程序主要分析了三种调制方式对放大器非线性的敏感度
💻 M
📖 第 1 页 / 共 2 页
字号:
clc;
clear all;
close all;
%%%%%%%%%%%%%%%%%%  系统参数设置  %%%%%%%%%%%%%%%%%%%%%%%%%%%%
N=10000;
M=16;
R=0.45;          %16PSK信号幅度,其他两个信号均以此为参考,以保证输入信号功率相同   
alpha=1.13;   %16apsk信号外围幅度比例(与psk信号对比)     
beta=0.95;    %16qam信号外围实部幅度比例
v=sqrt(-1);
ratio=1.7;      %     TWTA放大比例  认为在解调时有必要处理一下 
%%%%%%%%%%%%%%%%%%%%%%%   16_APSK信号处理模块    %%%%%%%%%%%%%%%%%%%%%%
%给出信号源
r1=R*alpha/3;
r2=R*alpha;
s0=[r1*exp(v*(2*pi*1/4-pi/4));
   r1*exp(v*(2*pi*2/4-pi/4));
   r1*exp(v*(2*pi*3/4-pi/4));
   r1*exp(v*(2*pi*4/4-pi/4));
   r2*exp(v*(2*pi*1/12-pi/12));
   r2*exp(v*(2*pi*2/12-pi/12));
   r2*exp(v*(2*pi*3/12-pi/12));
   r2*exp(v*(2*pi*4/12-pi/12));
   r2*exp(v*(2*pi*5/12-pi/12));
   r2*exp(v*(2*pi*6/12-pi/12));
   r2*exp(v*(2*pi*7/12-pi/12));
   r2*exp(v*(2*pi*8/12-pi/12));
   r2*exp(v*(2*pi*9/12-pi/12));
   r2*exp(v*(2*pi*10/12-pi/12));
   r2*exp(v*(2*pi*11/12-pi/12));
   r2*exp(v*(2*pi*12/12-pi/12))];
s=s0.';
x=randint(1,N,M)+1;   
for n=1:N
    x_apk(n)=s(x(n));
end
figure(1);
plot(real(x_apk),imag(x_apk),'.');title('16APK信号星座图');grid;
for i=1:30
%加入噪声
x_apknoisy=awgn(x_apk,i,'measured');
r_apk=abs(x_apknoisy);
q_apk=angle(x_apknoisy);
for n=1:N
    if r_apk(n)<=(r1+r2)/2
        if q_apk(n)<=pi/2&q_apk(n)>0
            x_deapk(n)=s(1);
        elseif q_apk(n)<=pi&q_apk(n)>pi/2
            x_deapk(n)=s(2);
        elseif q_apk(n)<=-pi/2&q_apk(n)>-pi
            x_deapk(n)=s(3);
        else x_deapk(n)=s(4);
        end
    else if q_apk(n)<=pi/6&q_apk(n)>0
            x_deapk(n)=s(5);
        elseif q_apk(n)<=pi/3&q_apk(n)>pi/6
            x_deapk(n)=s(6);
        elseif q_apk(n)<=pi/2&q_apk(n)>pi/3
            x_deapk(n)=s(7);
        elseif q_apk(n)<=2*pi/3&q_apk(n)>pi/2
            x_deapk(n)=s(8);
        elseif q_apk(n)<=5*pi/6&q_apk(n)>2*pi/3
            x_deapk(n)=s(9);
        elseif q_apk(n)<=6*pi/6&q_apk(n)>5*pi/6
            x_deapk(n)=s(10);
        elseif q_apk(n)<=-5*pi/6&q_apk(n)>-pi
            x_deapk(n)=s(11);
        elseif q_apk(n)<=-2*pi/3&q_apk(n)>-5*pi/6
            x_deapk(n)=s(12);
        elseif q_apk(n)<=-pi/2&q_apk(n)>-2*pi/3
            x_deapk(n)=s(13);
        elseif q_apk(n)<=-pi/3&q_apk(n)>-pi/2
            x_deapk(n)=s(14);
        elseif q_apk(n)<=-pi/6&q_apk(n)>-pi/3
            x_deapk(n)=s(15);
        else x_deapk(n)=s(16);
        end
    end
end
[num,rt]=symerr(x_apk,x_deapk);
ber_apk(i)=rt;
% figure(2);
% plot(real(x_apknoisy),imag(x_apknoisy),'.');
%经过放大器
for n=1:N
    x_apk_hpa(n)=saleh(x_apknoisy(n))/ratio;
end
% figure(3);
% plot(real(x_apk_hpa),imag(x_apk_hpa),'.');
    
%解调过程
r_apk=abs(x_apk_hpa);
q_apk=angle(x_apk_hpa);
for n=1:N
    if r_apk(n)<(r1+r2)/2
        if q_apk(n)<=pi/2&q_apk(n)>0
            x_deapk(n)=s(1);
        elseif q_apk(n)<=pi&q_apk(n)>pi/2
            x_deapk(n)=s(2);
        elseif q_apk(n)<=-pi/2&q_apk(n)>-pi
            x_deapk(n)=s(3);
        else x_deapk(n)=s(4);
        end
    else if q_apk(n)<=pi/6&q_apk(n)>0
            x_deapk(n)=s(5);
        elseif q_apk(n)<=pi/3&q_apk(n)>pi/6
            x_deapk(n)=s(6);
        elseif q_apk(n)<=pi/2&q_apk(n)>pi/3
            x_deapk(n)=s(7);
        elseif q_apk(n)<=2*pi/3&q_apk(n)>pi/2
            x_deapk(n)=s(8);
        elseif q_apk(n)<=5*pi/6&q_apk(n)>2*pi/3
            x_deapk(n)=s(9);
        elseif q_apk(n)<=6*pi/6&q_apk(n)>5*pi/6
            x_deapk(n)=s(10);
        elseif q_apk(n)<=-5*pi/6&q_apk(n)>-pi
            x_deapk(n)=s(11);
        elseif q_apk(n)<=-2*pi/3&q_apk(n)>-5*pi/6
            x_deapk(n)=s(12);
        elseif q_apk(n)<=-pi/2&q_apk(n)>-2*pi/3
            x_deapk(n)=s(13);
        elseif q_apk(n)<=-pi/3&q_apk(n)>-pi/2
            x_deapk(n)=s(14);
        elseif q_apk(n)<=-pi/6&q_apk(n)>-pi/3
            x_deapk(n)=s(15);
        else x_deapk(n)=s(16);
        end
    end
end
[num,rt]=symerr(x_apk,x_deapk);
ber_apkhpa(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_apknoisy;
y=x_apknoisy;
y1=x_apknoisy;
z=x_apknoisy;
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

r_apk=abs(z);
q_apk=angle(z);
for n=1:N
    if r_apk(n)<=(r1+r2)/2
        if q_apk(n)<=pi/2&q_apk(n)>0
            x_deapk(n)=s(1);
        elseif q_apk(n)<=pi&q_apk(n)>pi/2
            x_deapk(n)=s(2);
        elseif q_apk(n)<=-pi/2&q_apk(n)>-pi
            x_deapk(n)=s(3);
        else x_deapk(n)=s(4);
        end
    else if q_apk(n)<=pi/6&q_apk(n)>0
            x_deapk(n)=s(5);
        elseif q_apk(n)<=pi/3&q_apk(n)>pi/6
            x_deapk(n)=s(6);
        elseif q_apk(n)<=pi/2&q_apk(n)>pi/3
            x_deapk(n)=s(7);
        elseif q_apk(n)<=2*pi/3&q_apk(n)>pi/2
            x_deapk(n)=s(8);
        elseif q_apk(n)<=5*pi/6&q_apk(n)>2*pi/3
            x_deapk(n)=s(9);
        elseif q_apk(n)<=6*pi/6&q_apk(n)>5*pi/6
            x_deapk(n)=s(10);
        elseif q_apk(n)<=-5*pi/6&q_apk(n)>-pi
            x_deapk(n)=s(11);
        elseif q_apk(n)<=-2*pi/3&q_apk(n)>-5*pi/6
            x_deapk(n)=s(12);
        elseif q_apk(n)<=-pi/2&q_apk(n)>-2*pi/3
            x_deapk(n)=s(13);
        elseif q_apk(n)<=-pi/3&q_apk(n)>-pi/2
            x_deapk(n)=s(14);
        elseif q_apk(n)<=-pi/6&q_apk(n)>-pi/3
            x_deapk(n)=s(15);
        else x_deapk(n)=s(16);
        end
    end
end
[num,rt]=symerr(x_apk(50:N),x_deapk(50:N));
ber_apkhpapd(i)=rt;
end
n=1:30;
figure(2);
semilogy(n,ber_apk,'-bd',n,ber_apkhpa,'-rd',n,ber_apkhpapd,'-g*');
legend('理想状况','only HPA','HPA+Predistortion',3); 
title('APSK信噪比与误码率的关系曲线');
grid;
%%%%%%%%%%%%%%%%%%%%%%%   16_PSK信号处理模块    %%%%%%%%%%%%%%%%%%%%%%

s_psk=[R*exp(v*2*pi*1/16);
       R*exp(v*2*pi*2/16);
       R*exp(v*2*pi*3/16);
       R*exp(v*2*pi*4/16);
       R*exp(v*2*pi*5/16);
       R*exp(v*2*pi*6/16);
       R*exp(v*2*pi*7/16);
       R*exp(v*2*pi*8/16);
       R*exp(v*2*pi*9/16);
       R*exp(v*2*pi*10/16);
       R*exp(v*2*pi*11/16);
       R*exp(v*2*pi*12/16);
       R*exp(v*2*pi*13/16);
       R*exp(v*2*pi*14/16);
       R*exp(v*2*pi*15/16);
       R*exp(v*2*pi*16/16)].';
for n=1:N
    x_psk(n)=s_psk(x(n));
end
figure(3);
plot(real(x_psk),imag(x_psk),'.');title('16PSK信号星座图');grid;
for i=1:30
    x_psknoisy=awgn(x_psk,i,'measured');
    r_psk=abs(x_psknoisy);
    q_psk=angle(x_psknoisy);
    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,x_depsk);
    ber_psk(i)=rt;
    % 通过放大器
    for n=1:N
        x_psk_hpa(n)=saleh(x_psknoisy(n))/ratio;
    end
    q_psk=angle(x_psk_hpa);
    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);

⌨️ 快捷键说明

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