出错 Untitled9 (line 37) qpsk_signal = data_I.*carrier + data_Q.*sin(2*pi*fc*t);
时间: 2023-10-21 20:12:07 浏览: 137
QPSK.rar_qpsk信号
这行代码有两个问题。
首先是语法问题,应该使用点乘符号 `.*` 进行元素级别的乘法运算。所以代码应该改为:
```
qpsk_signal = data_I .* carrier + data_Q .* sin(2*pi*fc*t);
```
其次是逻辑问题,`qpsk_signal` 的构造方式不符合 QPSK 调制的原理。在 QPSK 调制中,需要将数据分为两路,分别进行 BPSK 调制,然后将两路信号相加,得到 QPSK 调制的信号。在这个代码中,`data_I` 和 `data_Q` 分别对应于 BPSK 调制的两路信号,但是它们分别乘上了 `carrier` 和 `sin(2*pi*fc*t)`,相当于对两路信号进行了不同的调制,这样得到的信号不是 QPSK 调制的信号。
正确的做法是,先将数据分为两路,分别进行 BPSK 调制。假设 `data` 为输入数据,`I` 和 `Q` 分别为两路信号,那么可以这样实现:
```
I = 2 * floor(data/2) - 1; % 偶数位为 -1,奇数位为 1
Q = 2 * mod(data, 2) - 1; % 奇数位为 -1,偶数位为 1
```
然后对两路信号分别乘上载波,并相加,得到 QPSK 调制的信号:
```
qpsk_signal = I .* cos(2*pi*fc*t) + Q .* sin(2*pi*fc*t);
```
阅读全文