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

📄 apskanalyze.m

📁 本程序主要对APSK信号进行了定性分析
💻 M
字号:
clear all;
close all;
clc;

%%%%%%%%%%%%%%%%%%%%%%%%%%%% 系统参数设置  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
N=10240;
M=16;
v=sqrt(-1);
K=4;
P=15;  % 功率设定
alpha=1.5:0.25:6;
for t=1:19
    
    R=sqrt(P/(4+16*alpha(t)*alpha(t)));


%%%%%%%%%%%%%%%%%%%%%%%  各种不同的APSK信号源  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
r1=R;
r2=R*alpha(t);
s=[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))];
x=randint(1,N,M)+1;   
for n=1:N
    x_apsk(n)=s(x(n));
end
% figure(1);
% plot(real(x_apsk),imag(x_apsk),'.');title('16APSK信号星座图');grid;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%  OFDM 调制  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

y_apsk=reshape(x_apsk,K,N/K);
for n=1:N/K
    z_apsk(:,n)=ifft(y_apsk(:,n),K);
end
zz_apsk=reshape(z_apsk,1,N);

%%%%%%%%%%%%%%%%%%%%%%%%% 直接送放大器 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for n=1:N
    HPA_apsk(n)=saleh(zz_apsk(n));
end

%%%%%%%%%%%%%%%%%%%   加入预失真过程(W-H方案)   %%%%%%%%%%%%%%%%%%%%%%%%%%%%

l1=0.6;
l2=1;
A=[zeros(2,N);ones(1,N);zeros(5,N)];
yi=zz_apsk;
y=zz_apsk;
y1=HPA_apsk;
z=HPA_apsk;
T=[0.6,0,0.3,0,0,0,0,0;
   0,0.1,0,0,0,0,0,0;
   0.3,0,0.6,0,0,0,0,0;
   0,0,0,0.1,0,0,0,0;
   0,0,0,0,0.1,0,0,0;
   0,0,0,0,0,0.6,0,0;
   0,0,0,0,0,0,0.1,0;
   0,0,0,0,0,0,0,0.1];
for n=4:N
 Q(n,:)=[-y(n-1),-y(n-2),yi(n),abs(yi(n))^2*yi(n),abs(yi(n))^4*yi(n),abs(yi(n))^6*yi(n),abs(yi(n))^8*yi(n),abs(yi(n))^10*yi(n)];
 y(n)=Q(n,:)*A(:,n-1);
 z3(n)=saleh(y(n));
 Q1(n,:)=[-y1(n-1),-y1(n-2),z3(n),abs(z3(n))^2*z3(n),abs(z3(n))^4*z3(n),abs(z3(n))^6*z3(n),abs(z3(n))^8*z3(n),abs(z3(n))^10*z3(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,:)'));
  E(n)=yi(n)-z3(n); 
  E1(n)=y(n)-y1(n);  
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  加入噪声  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
HPA_apsk=awgn(HPA_apsk,18,'measured');
z3=awgn(z3,18,'measured');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  解调过程  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

DeHPA_apsk=reshape(HPA_apsk,K,N/K);
DePD_apsk=reshape(z3,K,N/K);
for n=1:N/K
    Deyh_apsk(:,n)=fft(DeHPA_apsk(:,n),K);
    Deyp_apsk(:,n)=fft(DePD_apsk(:,n),K);
end

Dexh_apsk=reshape(Deyh_apsk,1,N);
Dexp_apsk=reshape(Deyp_apsk,1,N);


r_apk=abs(Dexh_apsk)/1.5;
q_apk=angle(Dexh_apsk);
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_apsk(4:N),x_deapk(4:N));
ber_apkhpa(t)=rt;

r_apk=abs(Dexp_apsk);
q_apk=angle(Dexp_apsk);
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_apsk(4:N),x_deapk(4:N));
ber_apkpd(t)=rt;
end

tt=1.5:0.25:6;
semilogy(tt,ber_apkhpa,'-rd',tt,ber_apkpd,'-bo');
legend('only HPA','PD+HPA');
title('16APSK信号星座外、内圆半径之比与系统误码率关系曲线');
xlabel('16APSK信号外、内圆半径之比');
ylabel('误码率');
grid;

⌨️ 快捷键说明

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