星座图与IQ调制总结+BPSK、QPSK、8PSK、16QAM等的区别与总结

PSK
1.PSK是相移键控,分为BPSK、QPSK、8PSK。BPSK即2PSK,QPSK即4PSK。
2.对于MPSK可以认为是把单位圆分成了M个部分。
3.PSK是点都在同一个圆上,呈圆形排列,幅度相同,差别只在于相位。

1.1 BPSK

BPSK是二相相移键控,2=2^1,传输一个符号为传输一个bit的数据,输入信号只有0或1。
此时IQ平面被对称两个点的连线分为两半。
在这里插入图片描述

1.2 用IQ调制实现BPSK

从这个图是把Q轴和I轴都单独拿出来了。从星座图点分别向两个轴做垂线,得到两个轴对应的取值。
可以看出,BPSK中I有两种取值,而Q只有一种取值,就是0。
取值表如下:
在这里插入图片描述

注意,这里输入的原始信息只有0和1,是在映射后才有了+1和-1.

2.1QPSK
在这里插入图片描述

QPSK是四相相移键控,4=2^2,传输一个符号为传输2bit的数据。
此时四个点分别两两关于原点对称,将对称点连线,IQ平面被分为4半。

2.2 用IQ调制实现QPSK
在这里插入图片描述

QPSK在用IQ调制实现时,I和Q分别有两个取值,组合出4个点。
看到这里或许会有种错觉,是不是I的取值和Q的取值相乘就可以得到星座图点数。
但8PSK推翻了这种错觉。
取值表如下:
在这里插入图片描述

3.1 8PSK
在这里插入图片描述

8PSK是八相相移键控,8=2^3,传输一个符号为传输3bit的数据。
此时八个点分别关于原点有四对对称,将对称点连线,IQ平面被分为8半。

3.12 用IQ调制实现8PSK
在这里插入图片描述

在8PSK中,I和Q都有四种取值,但是组合出8种结果。因为I中不是每一个点都和Q中所有点做了组合。
取值表如下:
在这里插入图片描述

目前采用的排列方式是格雷码。
由于从概率角度来说,误判为相邻点的概率要大于误判为相对点的概率。
采用格雷码使每相邻的状态间一般只有一位不同,这样可以减少出错的概率。

QAM
1.QAM比较常见的有16QAM、64QAM。
2.QAM的点不在圆上,呈矩形排列,幅度不相同,相位也不相同。或者说但凡幅度相同的相位必然不同,凡相位相同的幅度必不同。这样就使QAM容纳了更多的点,所以QAM的优点也在于其具有更大的符号率,从而能传输效率就越高。但同时,星座点间距离越近也决定了误码率会增加。

2.1 16QAM
2^4 = 16,16QAM中每个符号代表4个bit。
在这里插入图片描述

QAM也可以将IQ轴单独拿出来看,用图上这种排列方式举例,最右边的一列I代表从左向右第1和3位分别为0和1,即0x1x,然后再与Q组合得到四个不同的状态。

2.2 64QAM
2^6 = 64,64QAM中每个符号代表6个bit。
在这里插入图片描述

当数据被输入,会被分成两路,一路作为I,一路作为Q。每个符号代表6个bit,则I路占三个bit,Q路有三个bit。将两路组合得出最后的点,也得出最后点代表的6bit序列。
当接收到点时,我们会根据欧氏距离最小来判定其究竟是哪个点,从而得到其代表的二进制序列段。

原文链接:https://blog.csdn.net/weixin_40293250/article/details/106246728

### 绘制调制星座图的MATLAB代码 对于不同的相移键控(PSK)正交幅度调制(QAM),可以使用MATLAB内置函数来创建相应的星座图。以下是针对BPSKQPSK8PSK以及16QAM32QAM的具体实现方法。 #### BPSK Constellation Diagram ```matlab % Generate random bits and map to BPSK symbols [-1, 1] bits = randi([0 1], 1000, 1); bpsk_symbols = 2*bits - 1; % Plot constellation diagram scatter(real(bpsk_symbols), imag(bpsk_symbols)); axis([-1.5 1.5 -1.5 1.5]); grid on; title('BPSK Constellation'); xlabel('In-phase (I)'); ylabel('Quadrature (Q)'); ``` #### QPSK Constellation Diagram ```matlab % Create Gray-coded symbol mapping table for QPSK qpsk_table = [0+0j; 0+1j; 1+1j; 1+0j]; % Randomly select indices from the table indices = randi(length(qpsk_table), 1000, 1); % Map selected index values into complex numbers representing points in I/Q plane qpsk_symbols = qpsk_table(indices); % Display constellation plot of generated data sequence figure(); scatter(real(qpsk_symbols), imag(qpsk_symbols)); axis equal; grid on; title('QPSK Constellation'); xlabel('Real Part'); ylabel('Imaginary Part'); ``` #### 8PSK Constellation Diagram ```matlab M = 8; % Number of points in signal constellation theta = pi/M*(0:(M-1)); % Phase offset between adjacent phases eight_psk_points = exp(1i * theta); % Select some arbitrary set of transmitted signals as an example transmitted_signals = eight_psk_points(randperm(M)); % Draw constellation chart with grid lines enabled hFig = figure(); hAx = axes(hFig); constellationDiagram(transmitted_signals,'Title','8 PSK Signal Points',... 'ReferenceConstellation',eight_psk_points,... 'GridOn',true,'AxesScaling',[false false]); hold off; close all; clear hFig hAx; ``` #### 16-QAM & 32-QAM Constellation Diagrams 为了简化起见,这里提供了一个通用的方法来生成任意阶数的矩形QAM星座: ```matlab function const_pts = rectangular_qam(m) m_sqrt = sqrt(double(m)); if floor(m_sqrt)^2 ~= double(m) error('m must be perfect square.'); end real_part = (-floor((m_sqrt-1)/2):ceil((m_sqrt-1)/2))'; imag_part = (-floor((m_sqrt-1)/2):ceil((m_sqrt-1)/2))'; [real_grid,imag_grid] = meshgrid(real_part,imag_part); const_pts = reshape(complex(real_grid(:),imag_grid(:)),[],1); end %% Example usage: % Define modulation order M=16 or M=32 modulation_order = 16; % Get corresponding constellation point locations qam_constellations = rectangular_qam(modulation_order); % Visualize results using scatter plots subplot(1,2,1); scatter(real(qam_constellations), imag(qam_constellations),'filled'); title(['Rectangular ', num2str(modulation_order), '-QAM']); xlabel('Re'); ylabel('Im'); % Add reference labels at each plotted location text(real(qam_constellations)+0.05, ... imag(qam_constellations)-0.075, ... cellstr(num2str((1:length(qam_constellations))'))) % Repeat same process but now for higher-order case where applicable if modulation_order >= 32 subplot(1,2,2); modulation_order_32 = 32; qam_constellations_32 = rectangular_qam(modulation_order_32); scatter(real(qam_constellations_32), imag(qam_constellations_32),'filled'); title(['Rectangular ', num2str(modulation_order_32), '-QAM']); xlabel('Re'); ylabel('Im'); text(real(qam_constellations_32)+0.05, ... imag(qam_constellations_32)-0.075, ... cellstr(num2str((1:length(qam_constellations_32))'))) end ``` 上述脚本展示了如何利用MATLAB中的基本功能绘制各种类型的数字通信系统的星座图[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

古月小静

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值