2026a

# apskmod


幅度相移键控 (APSK) 调制

函数库: TyCommunication

# 语法

y = apskmod(x, M, radius)
y = apskmod(x, M, radius, phaseoffset)
y = apskmod(___; Name = Value)

# 说明

y = apskmod(x, M, radius) 根据每个 PSK 环指定的星座点数 M 和每个 PSK 环的半径 radius,对输入数据 x 进行 APSK 调制。

注:apskmod 特别适用于多环 PSK 星座。对于单个环 PSK 星座,使用 pskmod。


y = apskmod(x, M, radius, phaseoffset) 为 APSK 调制信号的每个 PSK 环指定初始相位偏移。


y = apskmod(x, M, radius, phaseoffset; Name = Value) 使用前面任何语法的一个或多个名称-值参数对指定选项。例如,InputType = "bit" 指定所需的输入类型为 bit。

在所有其他输入参数之后指定名称-值参数对。

# 示例

应用 APSK 调制

在每个圆上使用不相等数量的星座点的 APSK 调制数据。

定义调制阶数和 PSK 环半径的向量。为星座点生成数据。

using TyCommunication
M = [4 ,8 ,20]
radii = [0.3, 0.7 ,1.2]
modOrder = sum(M)
x = collect(range(0, stop = modOrder - 1))

对数据进行 APSK 调制。

y = apskmod(x, M, radii)

使用散点图绘制结果的星座图。

scatterplot(y)
应用相位偏移的 APSK 调制

使用 APSK 调制一个随机数据序列,内圆相位偏移为零,外圆相位偏移为 pi/6。

定义调制阶数、PSK 环半径和 PSK 环相位偏移的向量。产生随机数据。

using TyCommunication
using TyMath
rng = MT19937ar(1234)
M = [8, 8]
modOrder = sum(M)
radii = [0.5, 1]
phOff = [0 ,pi / 6]
x1 = randi(rng, [0 modOrder - 1], 100, 1)

对数据进行 APSK 调制。

y = apskmod(x1, M, radii, phOff)

使用散点图绘制得到的星座,并观察星座圆之间的相位偏移。

scatterplot(y)
应用 APSK 调制修改符号顺序

为 Gray 编码和 custom 编码的符号映射绘制 APSK 星座图。

定义调制阶数和 PSK 环半径的向量。为星座点生成位数据。

using TyCommunication
M = [8, 8]
modOrder = sum(M)
radii = [0.5 ,1.5]
x = transpose(de2bi((0:15)', Int64(log2(sum(M)))))

使用二进制输入绘制星座图,以突出星座映射的 Gray 编码特性。

y = apskmod(x[:], M, radii, InputType = "bit", PlotConstellation = true)

创建一个 custom 编码的符号映射向量。这个自定义的映射恰好是另一个 Gray 编码的映射。

cmap = [0; 1; 9; 8; 12; 13; 5; 4; 2; 3; 11; 10; 14; 15; 7; 6]

应用 APSK 调制与 custom 编码的符号映射。使用二进制输入绘制星座图,以突出显示自定义映射定义了不同的 Gray 编码符号映射。

y = apskmod(x[:], M, radii, SymbolMapping = cmap, InputType = "bit", PlotConstellation = true)
对输入比特流应用 APSK 调制

使用 APSK 调制随机位序列。通过噪声通道传递信号并显示星座图。

定义调制阶数和 PSK 环半径的向量。生成随机二进制数据。

using TyCommunication
using TyMath
rng = MT19937ar(1234)
M = [8 ,12, 20, 24]
radii = [0.8, 1.2, 2, 2.5]
bitsPerSym = Int(log2(sum(M)))
x = randi(rng, [0 1], 2000 * bitsPerSym, 1)

对数据应用 APSK 调制。

y = apskmod(x, M, radii, InputType = "bit")

通过一个信噪比为 25 dB 的 AWGN 信道。

yrec = awgn(rng, y, 25, "measured")

将接收到的星座图绘制为散点图。

scatterplot(yrec)

# 输入参数

x - 输入信号
标量 | 向量 | 矩阵

输入信号,指定为标量、向量或矩阵。x 的元素必须是 [0, (sum(M)-1)] 范围内的二进制值或整数。

注:要将输入信号作为二进制元素处理,请将 InputType 名称-数值参数对设置为 "bit"。对于二进制输入,行数必须是 log2(sum(M)) 的整数倍。列中的 log2(sum(M)) 位组映射到一个符号上,第一个位表示 MSB,最后一个位表示 LSB。

数据类型: Float | Int

M - 每个 PSK 环的星座点数
列向量

每个 PSK 环的星座点数,指定为具有多个元素的向量。每个向量元素表示其相应的 PSK 环中星座点的数量。第一个元素对应最里面的圆,以此类推,直到最后一个元素对应最外面的圆。元素值必须是 4 的倍数,sum(M) 必须是 2 的幂。调制阶数是信号星座中点的总数,等于向量元素之和 sum(M)。

示例: [4 12 16] 指定了一个调制阶数为 sum(M) = 32 的三 PSK 环星座。

数据类型: Float

Radius - 每个 PSK 环的半径
列向量

每个 PSK 环的半径,指定为与 M 长度相同的向量。第一个元素对应最里面的圆,以此类推,直到最后一个元素,对应最外面的圆。元素必须是正的,并按递增顺序排列。

示例: [0.5 1 2] 定义了三个星座 PSK 环的半径。内环的半径是 0.5,第二环的半径是 1.0,外环的半径是 2.0。

数据类型: Float

phaseoffset - 每个 PSK 环的相位偏移
[pi/M(1) pi/M(2) … pi/M(end)] (默认) | 标量 | 列向量

每个 PSK 环的相位偏移,以弧度为单位,指定为与 M 长度相同的标量或向量。第一个元素对应最里面的圆,以此类推,直到最后一个元素,对应最外面的圆。只有当 M 的所有元素都是相同的值时,相位偏移才可以是标量。

示例: [pi/4 pi/12 pi/16] 定义了三个星座 PSK 环相位偏移。内环的相位偏移为 pi/4,第二环的相位偏移为 pi/12,而外环的相位偏移为 pi/16。

数据类型: Float

# 名称-值参数

指定可选的参数对为 Name1 = Value1,...,NameN = ValueN。其中 Name 是参数名称,Value 是相应的值。名称-值参数必须出现在其他参数之后,但参数对的顺序并不影响。

例如: y = apskmod(x,M,radii,InputType = "bit",OutputDataType = "Float32")

SymbolMapping - 符号映射
"gray" | "contourwise-gray" | 整型向量

符号映射,由 SymbolMapping 和以下之一组成:

  • "contourwise-gray" - 在每个 PSK 环的相位维度中沿等高线使用 Gray 映射;

  • "gray" - 在振幅和相位维度上沿轮廓使用G ray 映射。对于 Gray 符号映射,M 的所有值必须相等,相位偏移的所有值必须相等;

  • 整型向量 - 使用自定义符号映射。向量必须由 sum(M) 个唯一元素组成,其值范围为 [0, (sum(M)-1]。第一个元素对应最里面圆的第一象限的星座点,随后的元素逆时针定位在 PSK 环周围。

默认的符号映射依赖于 M 和 phaseOffset。当 M 的所有元素都相等且 phaseOffset 的所有元素都相等时,默认为 "gray" 。对于所有其他情况,默认为 "contourwise-gray"。

数据类型: Float | String

InputType - 输入类型
"integer" (默认) | "bit"

输入类型,由 InputType 和以下选项之一组成:

  • "integer" - 输入信号必须由 [0,(sum(M) - 1)] 范围内的整数组成;

  • "bit" - 输入信号必须包含二进制值,并且行数必须是 log2(sum(M)) 的整数倍。假设二进制输入信号是左 msb 对齐的并按列指定的。列中的 log2(sum(M)) 位组映射到一个符号上,第一个位表示 MSB,最后一个位表示 LSB。

数据类型: String

OutputDataType - 输出数据类型
"Float64" (默认) | "Float32"

输出数据类型,由 OutputDataType 和 "Float64" 或 "Float32" 组成。

数据类型: String

PlotConstellation - 星座图绘制
false (默认) | true

星座图绘制,由 PlotConstellation 和布尔值组成。当绘制参考星座时,将 PlotConstellation 设置为 "true"

数据类型: Bool

# 输出参数

y - APSK 调制信号
标量 | 向量 | 矩阵

APSK 调制信号,作为复标量、向量或矩阵返回。y 的维度取决于指定的 InputType 值。

输入类型 y 的维度
"integer" y 和输入 x 具有相同的维度。
"bit" y 的行数等于 x 的行数除以 log2(sum(M))。

# 算法

该函数实现了一个干净的 APSK 星座。

一个干净的 M-APSK 星座由 NC 同心环或轮廓组成,每个环或轮廓具有均匀间距的 PSK 点。M-APSK 星座集合为:

  • 调制阶数等于所有的 相加。

  • 是同心环的个数。

  • 是第 环上的星座点数;

  • 是第 环上的半径;

  • 是第 环上的相位偏移量;

# 参考文献

[1] Corazza, Giovanni E. Digital Satellite Communications. New York: Springer Science Business Media, LLC, 2007.

[2] Liu, Z., Q. Xie, K. Peng, and Z. Yang. "APSK Constellation with Gray Mapping." IEEE Communications Letters. Vol. 15, Number 12, December 2011, pp. 1271–1273.

# 另请参阅

comm_GeneralQAMModulator