QPSK 调制它应该为每个符号使用 2 位,但是无论我使用 pskmod 还是 comm.QPSKModulator,我仍然得到与位相同数量的符号。难道我做错了什么?功能有问题吗?提前致谢。
M=4;
n=64;
m=log2(M);
x=round(rand(n*m,1));
mod = comm.QPSKModulator;
xmod1 = mod(x);
xmod=pskmod(x,M,pi/M,'gray');
QPSK 调制它应该为每个符号使用 2 位,但是无论我使用 pskmod 还是 comm.QPSKModulator,我仍然得到与位相同数量的符号。难道我做错了什么?功能有问题吗?提前致谢。
M=4;
n=64;
m=log2(M);
x=round(rand(n*m,1));
mod = comm.QPSKModulator;
xmod1 = mod(x);
xmod=pskmod(x,M,pi/M,'gray');
该pskmod
函数需要一个由符号组成的输入,这些符号是范围0
, ...,中的数字M-1
,而不是位。也就是说,它将符号调制为复数值,但不进行从位到符号的映射。这也是comm.QPSKModulator
对象的默认行为。
要将位到符号映射作为调制器的一部分包含在内,从而使用位形式的输入,请将对象的BitInput
属性设置为。这可以在创建对象时直接完成,通过将输入传递给构造函数:comm.QPSKModulator
true
'BitInput', true
modQPSK = comm.QPSKModulator('BitInput', true);
xmod1 = modQPSK(x);
另外,请注意我更改了对象的名称以避免遮蔽内置函数mod
。