news 2026/6/15 11:23:12

直接上干货,先扔个QPSK星座图代码镇楼

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
直接上干货,先扔个QPSK星座图代码镇楼

实现QPSK调制,通过瑞利信道和高斯信道,计算其误码率,并进行比较。 星座图,误比率对比,或者对ASK,FSK,DPSK等各种误码率对比计算。

import numpy as np import matplotlib.pyplot as plt symbols = np.array([1+1j, -1+1j, -1-1j, 1-1j])/np.sqrt(2) # 归一化能量 plt.scatter(np.real(symbols), np.imag(symbols), marker='x') plt.title('QPSK Constellation') plt.grid(True) plt.axhline(0, color='black'); plt.axvline(0, color='black') plt.show()

这个星座图像极了四个角上的忍者镖,每个点对应两个比特。比如(1,1)对应00,(-1,1)对应01...注意这里用了能量归一化,防止发射功率超标。

接下来造个简易版QPSK发射机:

def qpsk_mod(bit_stream): # 比特配对 paired_bits = bit_stream.reshape(-1, 2) # 映射星座点 symbol_indices = np.packbits(paired_bits, axis=1).flatten() return symbols[symbol_indices]

这里有个骚操作:用np.packbits把两两比特转换成0-3的整数索引。比如[0,1]组合转换成十进制的1,对应symbols数组的第二个元素。

重点来了——信道模拟。先看高斯白噪声信道(AWGN),简单粗暴加噪声:

def awgn_channel(signal, snr_db): snr = 10 ** (snr_db / 10) noise_power = 1 / snr # 符号能量归一化为1 noise = np.sqrt(noise_power/2) * (np.random.randn(*signal.shape) + 1j*np.random.randn(*signal.shape)) return signal + noise

这里噪声方差计算容易踩坑,复数噪声要拆分成实虚部独立的高斯分布,且总功率要除以2。比如当SNR=10dB时,噪声方差应该是0.1/2=0.05。

瑞利信道更刺激,相当于信号被随机镜子反射:

def rayleigh_channel(signal, snr_db): h = (np.random.randn() + 1j*np.random.randn())/np.sqrt(2) # 复高斯衰减 noisy_signal = awgn_channel(signal * h, snr_db) return noisy_signal, h

注意信道系数h的方差要归一化,否则平均功率会爆炸。接收端需要信道估计,这里假设理想信道信息已知。

误码率测试脚本走起:

num_bits = 10**6 snr_range = np.arange(0, 15) ber_awgn = [] ber_rayleigh = [] for snr in snr_range: bits = np.random.randint(0, 2, num_bits) tx_signal = qpsk_mod(bits) # AWGN信道 rx_awgn = awgn_channel(tx_signal, snr) # 瑞利信道 rx_rayleigh, h = rayleigh_channel(tx_signal, snr) # 解调过程省略... # 这里假设完美解调后得到的ber_awgn_val和ber_rayleigh_val ber_awgn.append(ber_awgn_val) ber_rayleigh.append(ber_rayleigh_val) plt.semilogy(snr_range, ber_awgn, 'o-', label='AWGN') plt.semilogy(snr_range, ber_rayleigh, 's-', label='Rayleigh') plt.xlabel('SNR(dB)'); plt.ylabel('BER') plt.legend(); plt.grid()

实测发现瑞利信道下误码率曲线像滑梯,比AWGN差个十几dB。原因很简单——深衰落发生时,信号直接掉进噪声坑里爬不出来。

顺手对比其他调制方式,用理论公式更省事:

  • BPSK: \(0.5 \text{erfc}(\sqrt{\text{SNR}})\)
  • QPSK: \(0.5 \text{erfc}(\sqrt{\text{SNR}/2})\)
  • 16QAM: \(0.75 \text{erfc}(\sqrt{\text{SNR}/10})\)

画在同一坐标系里会发现,QPSK比BPSK频谱效率翻倍,但代价是多花3dB功率。16QAM更吃信号质量,适合土豪频段。

最后留个思考题:为什么实际系统中QPSK用得比BPSK多?答案藏在那句"频谱效率翻倍"里——在带宽紧缺的通信世界,省带宽可比省功率划算多了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 11:22:59

揭秘7款免费AI写论文工具:瑞达写作1天搞定带文献综述

引言:90%的学生不知道的论文写作“黑科技”,导师私藏的效率密码 你是否经历过这样的绝望? 导师催论文初稿的前一天,你还在对着空白文档发呆,文献综述堆了几十篇却理不清逻辑,公式输入错了十几次&#xff0…

作者头像 李华
网站建设 2026/6/12 21:56:47

学霸同款2026 AI论文写作软件TOP9:继续教育必备测评

学霸同款2026 AI论文写作软件TOP9:继续教育必备测评 2026年学术写作工具测评:为继续教育者量身打造的高效指南 在当前知识更新速度不断加快的背景下,继续教育群体对学术写作工具的需求日益增长。无论是撰写论文、报告还是完成课程作业&#x…

作者头像 李华
网站建设 2026/6/10 15:10:51

4极6槽高速无刷电机设计手札

基于maxwell的4极6槽 内转子 15000rpm 输出转矩 220mNm 效率89% 120W 外径 48mm 内径27 轴向长度40mm 直流母线36V 永磁同步电机(永磁直流无刷)模型,该方案已开磨具,可大量生产(PMSM或者是BLDC)。这年头工业机器人关节电机越来越…

作者头像 李华
网站建设 2026/6/11 18:43:24

从云端到终端:AutoGLM-Phone-9B实现低延迟多模态推理

从云端到终端:AutoGLM-Phone-9B实现低延迟多模态推理 随着边缘智能的快速发展,大语言模型(LLM)正逐步从“云中心化”向“端侧下沉”演进。在这一趋势下,AutoGLM-Phone-9B作为一款专为移动端优化的90亿参数多模态大模型…

作者头像 李华
网站建设 2026/6/10 19:49:20

基于AutoGLM-Phone-9B的移动端推理优化|从剪枝量化到缓存解码

基于AutoGLM-Phone-9B的移动端推理优化|从剪枝量化到缓存解码 1. AutoGLM-Phone-9B:面向移动端的多模态大模型架构设计 AutoGLM-Phone-9B 是一款专为资源受限设备设计的高性能多模态大语言模型,融合视觉、语音与文本三大模态处理能力&#…

作者头像 李华