qdpsk的星座图
时间: 2023-11-09 09:04:20 浏览: 69
QDPSK是四相位差分调制,其星座图如下所示:
```
+1
|
+-----+-----+
| | |
| | |
| 11 | 01 |
| | |
| | |
+-----+-----+
|
-1
```
其中,+1表示正弦相位,-1表示反正弦相位,11表示正余弦相位,01表示反余弦相位。
相关问题
QDPSK信号的收端星座图,发端星座图
QDPSK信号的发端和收端星座图如下所示:
发端星座图:
```
+1
|
+-----+-----+
| | |
| | |
| 11 | 01 |
| | |
| | |
+-----+-----+
|
-1
```
发端星座图与上文中描述的QDPSK星座图相同。
收端星座图:
```
+1
|
+-----+-----+
| | |
| | |
| 10 | 00 |
| | |
| | |
+-----+-----+
|
-1
```
收端星座图与发端星座图不同,因为QDPSK信号在传输过程中可能会发生相位偏移。收端星座图中,10表示正余弦相位,00表示反余弦相位。
qdpsk的调制解调matlab代码
QDPSK(Quadrature Differential Phase Shift Keying)是一种数字调制方式,属于相干调制的一种。和DPSK相比,它减小了载波频率相位偏移对信号的影响,提高了系统的抗噪声能力,常用于无线通信系统。
下面是QDPSK调制解调的Matlab代码:
调制:
```matlab
clear;
clc;
close all;
% 设置参数
f=1e6; % 载波频率1MHz
T=0.1e-3; % 符号周期
M=4; % QPSK调制
L=100; % 随机位数
SNR=10; % 信噪比
% 生成随机序列
data=sign(randn(L,1));
data_I=data(1:2:end); % I路
data_Q=data(2:2:end); % Q路
% I路和Q路的调制
carrier_I=cos(2*pi*f*(0:T/(L/2-1):T));
carrier_Q=sin(2*pi*f*(0:T/(L/2-1):T));
mod_I=data_I'.*carrier_I;
mod_Q=data_Q'.*carrier_Q;
% QDPSK调制
mod=mod_I-j*mod_Q; % I+jQ为QPSK调制后的星座点
mod_d=[mod(1),mod(1:end-1)]; % 差分编码
qdpsk=imag(conj(mod_d).*mod);
% 显示星座图
scatterplot(mod);
% 加噪声
SNR_linear=10^(SNR/10);
noise=wgn(1,length(qdpsk),10*log10(1/SNR_linear));
qdpsk_noise=qdpsk+noise;
% 解调
qdpsk_noise_phase=angle(qdpsk_noise);
qdpsk_phase=angle(qdpsk);
qdpsk_diff=diff([0,qdpsk_phase]);
% 求解相邻相位值差,为0或1或-1,当相位值差为0时,代表传输的比特为“00”或“11”,否则就是“01”或“10”。
qdpsk_diff(qdpsk_diff<0) = qdpsk_diff(qdpsk_diff<0)+2*pi; % 对负数采用2π加法来转换相位值差。
qdpsk_diff=qdpsk_diff*pi/2; % 倍频锁相环带宽为相邻符号之间的角度差*pi/2
[bb,aa]=butter(2,pi/100);
% 输出字模,每隔L/2个符号输出,与原始随机序列data比较,判断误码率
signal_detect=cos(qdpsk_diff); % 倍频锁相环信号检测
signal_detect=filter(bb,aa,signal_detect);
signal_detect=signal_detect(L/2:L:end);
signal_detect(signal_detect>0)=1;
signal_detect(signal_detect<0)=-1;
% 计算误码率
ErrorRate=length(find(signal_detect-data))/L
```
解调:
```matlab
clear;
clc;
close all;
% 设置参数
f=1e6; % 载波频率1MHz
T=0.1e-3; % 符号周期
M=4; % QPSK调制
L=100; % 随机位数
SNR=10; % 信噪比
% 生成随机序列
data=sign(randn(L,1));
data_I=data(1:2:end); % I路
data_Q=data(2:2:end); % Q路
% I路和Q路的调制
carrier_I=cos(2*pi*f*(0:T/(L/2-1):T));
carrier_Q=sin(2*pi*f*(0:T/(L/2-1):T));
mod_I=data_I'.*carrier_I;
mod_Q=data_Q'.*carrier_Q;
% QDPSK调制
mod=mod_I-j*mod_Q; % I+jQ为QPSK调制后的星座点
mod_d=[mod(1),mod(1:end-1)]; % 差分编码
qdpsk=imag(conj(mod_d).*mod);
% 显示星座图
scatterplot(mod);
% 加噪声
SNR_linear=10^(SNR/10);
noise=wgn(1,length(qdpsk),10*log10(1/SNR_linear));
qdpsk_noise=qdpsk+noise;
% 解调
qdpsk_noise_phase=angle(qdpsk_noise);
qdpsk_phase=angle(qdpsk);
qdpsk_diff=diff([0,qdpsk_phase]);
% 求解相邻相位值差,为0或1或-1,当相位值差为0时,代表传输的比特为“00”或“11”,否则就是“01”或“10”。
qdpsk_diff(qdpsk_diff<0) = qdpsk_diff(qdpsk_diff<0)+2*pi; % 对负数采用2π加法来转换相位值差。
qdpsk_diff=qdpsk_diff*pi/2; % 倍频锁相环带宽为相邻符号之间的角度差*pi/2
[bb,aa]=butter(2,pi/100);
% 输出字模,每隔L/2个符号输出,与原始随机序列data比较,判断误码率
signal_detect=cos(qdpsk_diff); % 倍频锁相环信号检测
signal_detect=filter(bb,aa,signal_detect);
signal_detect=signal_detect(L/2:L:end);
signal_detect(signal_detect>0)=1;
signal_detect(signal_detect<0)=-1;
% 计算误码率
ErrorRate=length(find(signal_detect-data))/L
```
阅读全文