主要内容

本页翻译不是最新的。点击此处可查看最新英文版本。

pskmod

使用 M-PSK 方法调制信号

说明

Y = pskmod(X,M) 使用多进制相移键控 (M-PSK) 方法调制输入信号 XM 指定调制阶数。

Y = pskmod(X,M,phaseoffset) 指定 M-PSK 星座图的相位偏移。

示例

Y = pskmod(X,M,phaseoffset,symorder) 指定 M-PSK 星座图的符号顺序。

Y = pskmod(X,M,Name=Value) 使用任一上述语法指定可选名称-值参量。例如,pskmod(Y,M,PlotConstellation=true) 使用调制阶数 M 进行调制并绘制星座图。请在所有其他输入参量后指定名称-值参量。

示例

全部折叠

调制并绘制 QPSK 和 16-PSK 信号的星座图。

QPSK

将调制阶数设置为 4。

M = 4;

生成随机数据符号。

data = randi([0 M-1],1000,1);

调制数据符号。

txSig = pskmod(data,M,pi/M);

使信号通过白噪声并绘制其星座图。

rxSig = awgn(txSig,20);
scatterplot(rxSig)

Figure Scatter Plot contains an axes object. The axes object with title Scatter plot, xlabel In-Phase, ylabel Quadrature contains a line object which displays its values using only markers. This object represents Channel 1.

16-PSK

将调制阶数从 4 更改为 16。

M = 16;

生成随机数据符号。

data = randi([0 M-1],1000,1);

调制数据符号。

txSig = pskmod(data,M,pi/M);

使信号通过白噪声并绘制其星座图。

rxSig = awgn(txSig,20);
scatterplot(rxSig)

Figure Scatter Plot contains an axes object. The axes object with title Scatter plot, xlabel In-Phase, ylabel Quadrature contains a line object which displays its values using only markers. This object represents Channel 1.

生成随机符号。

dataIn = randi([0 3],1000,1);

QPSK 调制数据。

txSig = pskmod(dataIn,4,pi/4);

使信号通过 AWGN 信道。

rxSig = awgn(txSig,10);

解调接收到的信号并计算符号错误数。

dataOut = pskdemod(rxSig,4,pi/4);
numErrs = symerr(dataIn,dataOut)
numErrs = 
3

设置调制阶数,然后创建一个包含完整星座图点集的数据序列。

M = 8;
data = (0:M-1);
phaseoffset = 0;

可视化 8-PSK 的符号映射星座图,分别表示格雷编码与二进制编码数据在调制与解调后的结果。

symgray = pskmod(data,M,phaseoffset,'gray',PlotConstellation=true, ...
          InputType='integer');

Figure contains an axes object. The axes object with title 8-PSK, Gray Mapping, xlabel In-phase Amplitude, ylabel Quadrature Amplitude contains 11 objects of type line, text. One or more of the lines displays its values using only markers

mapgray = pskdemod(symgray,M,phaseoffset,'gray',OutputType='integer');
symbin = pskmod(data,M,phaseoffset,'bin');
mapbin = pskdemod(symbin,M,phaseoffset,'bin',PlotConstellation=true, ...
         OutputType='bit');

Figure contains an axes object. The axes object with title 8-PSK, Binary Mapping, xlabel In-phase Amplitude, ylabel Quadrature Amplitude contains 11 objects of type line, text. One or more of the lines displays its values using only markers

输入参数

全部折叠

输入信号,指定为由正整数组成的标量、向量或矩阵。X 的元素必须具有在范围 [0, M – 1] 内的二进制或整数值,其中 M 是调制阶数。

注意

要将输入信号作为二进制元素处理,请将 InputType 名称-值参量设置为 'bit'。对于二进制输入,行数必须为 log2(M) 的整数倍。该函数将 log2(M) 位组映射到一个符号上,第一个位表示最高有效位 (MSB),最后一个位表示最低有效位 (LSB)。

依赖关系

对于数据类型为 logical 的输入信号,必须将 InputType 设置为 'bit'

数据类型: double | single | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical

调制阶数,指定为大于 1 的整数值。

数据类型: double

以弧度指定的 PSK 星座图的相位偏移,指定为标量。

数据类型: double

符号顺序,指定为 'gray''bin' 或向量。此参量指定函数如何将二进制向量赋给对应的整数。

  • 'gray' - 使用格雷编码顺序。

  • 'bin' - 使用二进制编码顺序。

  • 向量 - 使用自定义符号顺序。向量长度为 M,包含范围 [0, M – 1] 内的唯一值。第一个元素与对应于角度 phaseoffset 的星座图点相关,后续元素按逆时针方向排列。

名称-值参数

全部折叠

将可选参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。

示例: Y = pskmod(X,M,phaseoffset,symorder,InputType='bit')

输入类型,指定为 'integer''bit'

  • 'integer' - 输入信号由范围 [0, M – 1] 内的整数组成。

  • 'bit' - 输入信号由二进制值组成,且行数必须为 log2(M) 的整数倍。

输出的数据类型,指定为 'double''single'

绘制星座图的选项,指定为逻辑值 0 (false) 或 1 (true)。要绘制 PSK 星座图,请将 'PlotConstellation' 设置为 true

数据类型: logical

输出参量

全部折叠

M-PSK 调制的基带信号,以由复数值组成的标量、向量或矩阵形式返回。Y 的列表示独立通道。对于整数输入,输出 Y 与输入信号 X 具有相同的维度。对于比特输入,Y 中的行数是 X 中的行数除以 log2(M)

算法

对于更高阶 PSK 星座图,使用二进制顺序符号映射的 M 进制 PSK 信号,其复基带形式为

sm(t)=exp(j(2πmM+ϕ));m{0,1,,M1}.

当输入配置为用于位时,log2(M) 位组表示所配置符号映射的复符号。映射可以是二进制编码、格雷编码或自定义编码。

格雷编码的优点是在相邻星座图点之间只有一位发生变化,这会优化误码率性能。

此 8-PSK 星座图使用格雷编码符号映射。

对于调制阶数大于 4 的情况,AWGN 中 PSK 的误码率性能会变差。在此格雷编码映射的误码率图中,QPSK 和 BPSK 曲线彼此重叠。

参考

[1] Proakis, John G. Digital Communications. 4th ed. New York: McGraw Hill, 2001.

扩展功能

全部展开

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

版本历史记录

在 R2006a 之前推出

全部展开