# dpskdemod
差分相移键控解调
函数库: TyCommunication
# 语法
z = dpskdemod(y, M)
z = dpskdemod(y, M, phaserot)
z = dpskdemod(y, M, phaserot, symorder)
# 说明
z = dpskdemod(y, M) 解调具有调制阶数 M 的 DPSK 调制信号的复包络 y。
z = dpskdemod(y,M, phaserot) 指定 DPSK 调制的相位旋转。
z = dpskdemod(y,M, phaserot, symorder) 也指定了符号的顺序。
# 示例
DPSK 解调
在一个引入相移的通信信道中解调 DPSK 数据。
生成一个 4 进制的数据向量并使用 DPSK 进行调制。
using TyCommunication
using TyMath
rng = MT19937ar(1234)
M = 4
dataIn = randi(rng, [0 M - 1], 1000, 1)
txSig = dpskmod(dataIn, M)
应用传输过程中产生的随机相移。
rxSig = txSig * exp(2im * pi * rand(rng))
对收到的信号进行解调。
dataOut = dpskdemod(rxSig, M)
调制器和解调器具有相同的初始条件。然而,只有接收的信号经历了相移。因此,第一个解调的符号很可能是错误的。因此,在使用 DPSK 时,你应该总是丢弃第一个符号。
找到符号错误的数量。
errs, = symerr(dataIn, dataOut)
errs = 1
有一个符号是错误的。丢掉第一个符号后,重复错误计算。
errs, = symerr(dataIn[2:end], dataIn[2:end])
errs = 0
# 输入参数
y - DPSK 调制的输入信号向量 | 矩阵
DPSK 调制的输入信号,指定为向量或矩阵。如果 y 是一个矩阵,该函数独立处理各列。
数据类型: Float
复数支持: 是
M - 调制阶数二的整数次方
调制阶数,指定为 2 的整数次方。
示例: 2 | 4 | 16
数据类型: Int
phaserot - 相位旋转0(默认)| 标量 | [ ]
DPSK 调制的相位旋转,以弧度为实数标量指定。每个符号的总相移是 phaserot 和差分调制产生的相位之和。
如果你指定 phaserot 为空,那么 dspkdemod 使用 0 度的相位旋转。
示例: pi/4
数据类型: Float
symorder - 符号顺序"bin"(默认) | "gray"
符号顺序,指定为 "bin" 或 "gray"。这个参数指定了函数如何将二进制向量分配给相应的整数。
如果符号顺序是 "bin",函数使用自然的二进制码排序。
如果符号顺序是 "gray",函数使用格雷码的排序。
数据类型: String
# 输出参数
z - DPSK 解调的输出信号向量 | 矩阵
DPSK 解调的输出信号,以向量或矩阵形式返回,其列数与输入信号 y 相同。
提示
这个函数中使用的微分算法比较了一个调制信号的两个连续元素。为了确定向量 z 的第一个元素,或矩阵 z 的第一行,该函数使用初始相位旋转为 0。