📄 apskanalyze.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 + -