16APSK星座点分为4个内环点和12个外环点
假设内环横纵坐标为a,则内环四个点坐标为(a,a)
外环点将每个象限分为三部分,每两个点之间对应角度为2*pi/12 = pi/6
每个象限中有三个点,以第一象限为例,三个点中的第二个点位于3*pi/12 = pi/4处,故第一个点的
角度为3*pi/12 - 2*pi/12 = pi/12
令靠近xy轴的外环点横/纵坐标也为a
则可以计算得到归一化后内外环的星座点坐标(a=0.2924,b=1.0913,c=0.7989)
clc
clear
close all;
%外环点将每个象限分为三部分,每两个点之间对应角度为2*pi/12 = pi/6
%每个象限中有三个点,以第一象限为例,三个点中的第二个点位于3*pi/12 = pi/4处,故第一个点的角度为3*pi/12 - 2*pi/12 = pi/12
%假设内环横纵坐标为a,则内环四个点坐标为(a,a),令靠近xy轴的外环点横/纵坐标为a
%则可以计算得到归一化后内外环的星座点坐标
a = 1;
r = 0;%外环半径
%靠近xy轴的外环点坐标(a,b)/(b,a)计算
%a/r = sin(pi/12);
r = a/sin(pi/12);
b = sqrt(r^2 - a^2);
%pi/4处的外环点坐标计算
%c^2 + c^2 = r^2
c = sqrt(r^2/2);
%16个符号的总能量
sum = (a^2+a^2)*4 + (a^2+b^2)*8 + (c^2+c^2)*4;
%单个符号平均能量
signal = sqrt(sum/16);
%a,b,c归一化/量化
a/signal
b/signal
c/signal
aa = a/signal*256;
bb = b/signal*256;
cc = c/signal*256;
%%%%%%%%%%%%%%%%%
% 16-APSK 星座图绘制
clc
clear
% 定义内圈和外圈的半径
r1 = 1.4142; % 内圈半径
r2 = 3.8637; % 外圈半径
% 定义外环相位
theta_outer = linspace(pi/12, 2*pi-pi/12, 12); % 均匀分布相位
% 定义内环相位
theta_inner = linspace(pi/4, 2*pi-pi/4, 4); % 均匀分布相位
% 分配相位到内圈和外圈
% 内圈4个点,外圈12个点,这里为了简化,我们让外圈的点均匀分布
inner_indices = 1:4;
outer_indices = 1:12;
% 计算内圈和外圈的坐标
inner_x = r1 * cos(theta_inner(inner_indices));
inner_y = r1 * sin(theta_inner(inner_indices));
outer_x = r2 * cos(theta_outer(outer_indices));
outer_y = r2 * sin(theta_outer(outer_indices));
% 合并坐标
x = [inner_x,outer_x];
y = [inner_y,outer_y];
% 绘制星座图
figure;
scatter(x, y, 'filled');
grid on;
axis equal;
xlabel('In-phase');
ylabel('Quadrature-phase');
title('16-APSK Constellation Diagram');