
简介这是一份面向通信工程、电子信息类专业学生的《通信原理》习题解答资料配套李晓峰教材使用适合正在备考期末、考研或自学通信原理的读者用来核对解题过程、梳理公式推导思路。资源共1个PDF文件压缩包约2.14MB内容围绕熵的计算、信道容量、模拟调制等核心章节展开包含二元消息符号熵值求解、电话按键熵与熵率计算、DVD数据率估算、香农公式求信道容量与调制解调器选型分析等典型例题的完整推导。其中对AM信号各频率分量功率、调制指数、边带功率占比的逐项计算以及单边带上下边带信号表达式与频谱图的给出均有较详细步骤SSB解调器各节点波形的推导也一并呈现便于读者对照检查自己的解题思路。目前已有1291人学习下载适合作为课后练习与考前复习的答案参考帮助快速定位易错公式与计算细节。1. 通信原理习题答案全集到底解决什么问题期末自习室里最典型的画面是这样的桌上一本《通信原理》屏幕上是那份按题号排下来的答案 PDF翻到第 187 页写着「量化信噪比约 42 dB」你在草稿纸上算出来 38 dB两边差 4 dB谁也不服谁。答案全集的价值从来不在那个数字本身而在于它把「题型—公式—参数取值」这条链路固定了下来让你算错的时候有一个可对照的坐标而不是凭感觉猜自己错没错。这门课的错误高度集中在几个口径上噪声功率谱密度取单边 N0 还是双边 N0/2、信噪比 r 指的是带内功率比还是 Eb/N0、抽样频率按低通还是带通公式、量化间隔取 Δ 还是 Δ/2、汉明码生成矩阵是系统形式还是多项式形式。任何一个口径选错结果差几倍甚至十几 dB而答案 PDF 通常只给结论不给口径。所以这份答案集更合适的用法是当「校验基准」自己先按课本口径推一遍再用代码把整条计算链跑一遍三边对上才算这题真会了。下面按抽样与量化、模拟与数字调制、编码与信道容量、题库化整理四段展开每段都给可复现的命令和参数。2. 抽样定理与 PCM 量化编码答案里最容易对不上的两类题抽样和量化是整本答案集里错得最密集的两章原因是这两块的公式全都有隐含前提答案不写你得自己认出来。2.1 低通与带通抽样定理的判别口径低通情形没有歧义m(t) 最高频率为 fH抽样频率 fs ≥ 2fH工程上留 20% 余量取 2.2fH 到 2.5fH。答案里出现「最小抽样频率」时写的是理论下限 2fH不是工程值这是第一个要盯住的地方。带通情形的公式是 fs 2(fL fH)/(2n 1)其中 n 取能满足 fs ≥ 2BB fH − fL的最大整数。很多人直接取 n ⌊fH/B⌋这一步就错了。举个答案集里高频出现的例子fL 20 kHzfH 30 kHzB 10 kHz。按 ⌊30/10⌋ 3 算fs 2×50/7 ≈ 14.29 kHz可它小于 2B 20 kHz违反条件。要满足 2n 1 ≤ (fL fH)/B 5n 最大取 2于是 fs 2×50/5 20 kHz。这一题两种算法差了近 6 kHz答案给 20 kHz 才对。2.2 量化信噪比公式的三种写法与对应前提均匀量化下量化间隔 Δ (b − a)/MM 2^N量化噪声功率 Nq Δ²/12假设量化误差在 [−Δ/2, Δ/2] 内均匀分布。信号功率怎么算决定了答案长什么样信号假设信噪比表达式用位数表示数值示例N 8满量程正弦波S/Nq 3M²/26.02N 1.76 dB49.9 dB在量程内均匀分布S/Nq M²6.02N dB48.2 dB正弦波、非满量程幅度为量程的 1/kS/Nq 3M²/(2k²)6.02N 1.76 − 20lgkk2 时 43.9 dB看到答案里写「6N 2」它默认的是满量程正弦波写「6N」默认的是均匀分布信号。这两种写法在同一份答案集里经常混着出现先确认题目给的信号是什么再决定用哪一行。2.3 用 Python 复现 A 律 13 折线编码PCM 编码题基本都落在 8 位非线性编码上1 位极性码 3 位段落码 4 位段内码。八段的起点电平和段内量化间隔是固定的把它写成表编码过程就是查表和除法段落号段落起点归一化段内量化间隔段落码101/204800021/1281/204800131/641/102401041/321/51201151/161/25610061/81/12810171/41/6411081/21/32111把这张表直接翻译成代码就能和答案逐位对照# A律13折线PCM编码极性码 3位段落码 4位段内码 START [0, 1/128, 1/64, 1/32, 1/16, 1/8, 1/4, 1/2] # 8段起点(归一化) STEP [1/2048, 1/2048, 1/1024, 1/512, 1/256, 1/128, 1/64, 1/32] # 段内间隔 def alaw13_encode(x): x: 归一化样值, 取值(-1, 1)返回8位码元列表 pol 1 if x 0 else 0 # 极性码正为1负为0 v abs(x) seg 7 for i in range(8): if v START[i] 16 * STEP[i]: # 落在第 i 段的量化范围内 seg i break idx min(int((v - START[seg]) // STEP[seg]), 15) # 段内第几个量化级 segcode [int(b) for b in format(seg, 03b)] # 段落码3位 idxcode [int(b) for b in format(idx, 04b)] # 段内码4位 return [pol] segcode idxcode for x in (0.0, 0.001, 0.02, 0.15, 0.55, -0.55): print(f{x:.4f} - {.join(map(str, alaw13_encode(x)))}) # 译码电平取段内中点这是答案里最常见的约定 def alaw13_decode(code): pol, seg code[0], int(.join(map(str, code[1:4])), 2) idx int(.join(map(str, code[4:8])), 2) lvl START[seg] (idx 0.5) * STEP[seg] # 0.5 表示取量化级中点 return lvl if pol else -lvl编码部分的关键在段落的判定边界第 i 段的上界是 START[i] 16×STEP[i]用严格小于判断正好落在边界上的样值归入下一段。段内码 idx 用整除得到 0 到 15越界要截断。译码那句(idx 0.5)是答案分歧点有的答案不加这半格直接取 idx×STEP两种写法的译码电平差半个量化间隔核对时先看题目有没有要求「取量化级中点」。2.4 答案对不上时按顺序查这四处一是抽样频率公式选错低通套带通或带通里 n 取错二是把单边功率谱密度 N0 当成双边噪声功率差一倍即 3 dB三是量化信噪比没确认信号分布假设凭空差 1.76 dB四是 13 折线译码是否加了半格。前两处差 3 dB 及以上后两处差 1.76 dB 和半格台阶按差值大小倒推错在哪一环比从头重算快得多。3. 模拟调制与数字调制从 AM/FM 带宽到 2PSK 误码率的答案复核模拟调制题看带宽和效率数字调制题看误码率两块的答案各有固定的参数口径。3.1 AM、DSB、SSB 的带宽与调制效率对照调制方式带宽调制效率 η解调方式AM2fmm²/(2 m²)m 1 时 1/3包络检波DSB2fm1相干解调SSBfm1相干解调VSBfm 到 2fm 之间1相干解调FM2(Δf fm)不适用鉴频AM 的调制效率上限 1/3 是常考点m 1 时 η 1/3m 0.5 时只有 1/9。答案里出现 2/3、50% 这类数字多半是把已调信号总功率当成了边带功率。3.2 FM 带宽与调频指数的答案口径FM 带宽用卡森公式 B 2(Δf fm) 2(mf 1)fm其中 mf Δf/fm 是调频指数。窄带调频取 B ≈ 2fm宽带调频按卡森公式。答案里的分歧点是 fm 取调制信号的最高频率还是单音频率单音调制时两者相同多音信号或多路复用时必须取最高频率用基频算会明显偏小。调频制的抗噪改善与 mf 的平方量级相关所以题目里给「加大频偏提升输出信噪比」这类结论时配套的代价是带宽按卡森公式线性上升这层交换关系在答案里通常只写结论答题时该写清。3.3 四种二元数字调制的误码率公式与 r 的定义先明确 r 的定义这里 r 是解调器输入端的带内信号功率与噪声功率之比不是 Eb/N0。两者差一个 Tb×B 因子代入之前必须统一。调制方式相干解调 Pe非相干解调 Pe2ASK½erfc(√(r/4))½e^(−r/4)包络检波2FSK½erfc(√(r/2))½e^(−r/2)包络检波2PSK½erfc(√r)不适用2DPSK2Pe(1 − Pe)Pe 为 2PSK 的值近似 2Pe小误码率时用 Eb/N0 表示时2PSK 的 Pe Q(√(2Eb/N0))2FSK 相干为 Q(√(Eb/N0))。同一份答案集里换用两套符号很常见核对前先翻回题目给的 r 定义确认它指的是哪一种。3.4 用蒙特卡洛仿真核对理论曲线理论公式记不住没关系仿真跑一次就知道哪个公式对。下面这段用 Eb/N0 口径噪声单边谱密度归一为 1import numpy as np from scipy.special import erfc rng np.random.default_rng(7) def ber_2psk(ebn0_dB, n200000): 2PSK 相干解调发送 ±sqrt(Eb)噪声方差 N0/2 0.5 ebn0 10 ** (ebn0_dB / 10) a np.sqrt(ebn0) # 单边谱密度 N01 时的幅度 tx rng.choice([-a, a], n) # 等概双极性符号 rx tx rng.normal(0, np.sqrt(0.5), n) # 加性高斯白噪声 return np.mean(np.sign(rx) ! np.sign(tx)) # 判决门限为 0 for db in range(0, 11, 2): sim ber_2psk(db) theory 0.5 * erfc(np.sqrt(10 ** (db / 10))) # Q(sqrt(2Eb/N0)) print(fEb/N0{db:2d} dB 仿真{sim:.5f} 理论{theory:.5f})a √(Eb/N0)配合噪声标准差√(N0/2) √0.5判决量是 ±a 加高斯噪声门限 0错误概率就是 Q(a/σ) Q(√(2Eb/N0))与理论式 ½erfc(√(Eb/N0)) 完全等价——因为 ½erfc(x) 与 Q(√2x) 是同一个函数。仿真样本数取 20 万时10⁻³ 量级的误码率有约 5% 的统计涨落想更稳就加到 10⁶或者用固定种子控制复现。仿真跑出来对不上理论先查噪声方差是不是写成了 1该是 N0/2再查判决门限和符号能量有没有统一这两处一动曲线整体平移 3 dB。4. 差错控制编码与香农公式手算答案的验算链编码题的答案看起来最像「天书」其实每一步都能被程序验证。4.1 (7,4) 汉明码生成矩阵与伴随式的标准步骤系统形式的 (7,4) 汉明码生成矩阵写成 G [I₄ | P]其中 P 是 4×3 的校验部分那么监督矩阵 H [Pᵀ | I₃]。用下面这组矩阵七个非零伴随式刚好一一对应七个码位伴随式 S (s1s2s3)对应出错码位码位性质100第 5 位校验位010第 6 位校验位001第 7 位校验位110第 1 位信息位011第 2 位信息位111第 3 位信息位101第 4 位信息位伴随式为零说明无错落在表里说明单比特错翻转对应码位即可纠出现表外的伴随式说明至少两位错只能检不能纠这是答案里常被略过的一句。4.2 循环码多项式除法在答案里的两种写法循环码题有两种解法一是把码字当成多项式做模 g(x) 除法余式为零即合法码字二是用生成矩阵做矩阵乘法。两种写法在答案集里并存手算时多项式除法更省事编程时矩阵法更好写。要注意的是生成多项式 g(x) 的次数等于校验位数比如 (7,4) 码的 g(x) 是三次多项式除法的余式是 2 次写成三位二进制才是余式系数少写一位是最常见的低级错误。4.3 香农公式题的单位陷阱C B log₂(1 S/N)三个量各有坑B 的单位必须是 HzS/N 是功率比值不是分贝结果单位是 bit/s。题目给「信噪比 30 dB」时先换算成 1000 再代入C B log₂(1001) ≈ 9.97B。更隐蔽的一类是给噪声单边谱密度 N0 和信号功率 S让你求带宽趋于无穷时的极限容量把 S/N S/(N0B) 代入令 B → ∞由 ln(1 x) ≈ x 得 C → S/(N0 ln2) ≈ 1.443 S/N0。这个 1.443 是答案里的固定常数自己推一遍比背下来可靠。4.4 用 Python 一次跑通编码校验与容量反算import numpy as np G np.array([[1,0,0,0,1,1,0], [0,1,0,0,0,1,1], [0,0,1,0,1,1,1], [0,0,0,1,1,0,1]]) H np.array([[1,0,1,1,1,0,0], [1,1,1,0,0,1,0], [0,1,1,1,0,0,1]]) def encode(msg4): msg4: 长度4的0/1列表返回7位系统码 return (np.array(msg4) G) % 2 def correct(rx7): 单比特纠错用伴随式在H的列里定位错误位置 rx np.array(rx7) s (H rx) % 2 if not s.any(): return rx, 0 # 无错 for pos in range(7): if np.array_equal(s, H[:, pos]): # 伴随式等于第pos列 rx[pos] ^ 1 return rx, pos 1 # 返回纠错后的码字和出错位 return rx, -1 # 多位错无法定位 def shannon(B, snr_dB): B: 带宽(Hz)snr_dB: 信噪比(分贝)返回 bit/s return B * np.log2(1 10 ** (snr_dB / 10)) msg [1, 0, 1, 1] cw encode(msg) print(编码结果:, .join(map(str, cw))) # 信息位在前校验位在后 rx cw.copy(); rx[2] ^ 1 # 人为打错第3位 print(纠错后:, .join(map(str, correct(rx)[0])), 出错位:, correct(rx)[1]) print(B3kHz, 20dB 时容量:, round(shannon(3000, 20), 1), bit/s)encode用矩阵乘法加模 2 取余实现信息位原样保留在最高四位校验位由 P 决定。correct的思路是把伴随式逐列和 H 比对匹配到哪一列就翻转哪一位遍历结束还没匹配说明错位数超过一位。shannon里10 ** (snr_dB/10)完成 dB 到比值的换算B 直接以 Hz 传入。验算时把encode的结果和答案里的码字逐位对只要信息位位置一致、校验位对得上说明两边的 G 是同一个等价形式如果校验位整体不同但纠错后能自洽通常只是 P 的列顺序不同属于等价码不必强行改成答案的写法。5. 把答案全集变成可检索的个人题库PDF 提取、公式标记与错题回填翻 PDF 找题是最低效的用法把它拆成本地文本、按题号切段、按知识点打标签复习效率完全不同。5.1 用 pdftotext 拆成按题号对齐的文本# -layout 保留原始排版避免公式和表格被压成一行 pdftotext -layout 通信原理习题答案全集.pdf answers.txt # 按第X章或X-Y题号切分成单题文件 python split_by_number.py answers.txt ./bank --pattern ^\s*(\d[-.]\d)\s # 检索所有涉及误码率的题目只看文件路径和上下文两行 rg -n -C 2 误码率|Pe|erfc ./bank-layout是关键参数不加它上下标和分式会被重排成乱序字符后续检索几乎不可用。切分脚本里用题号正则做分隔符每道题单独成文件文件名带上题号之后用rg搜关键词能直接跳到题。5.2 给每道题打知识点标签并建错题索引标签覆盖题型回填时机抽样量化抽样频率、量化信噪比、13 折线算错差值超过 2 dB 时模拟调制AM/DSB/SSB 带宽、FM 卡森公式带宽算式写错时数字调制2ASK/2FSK/2PSK/2DPSK 误码率公式与 r 定义对不上时编码容量汉明码、循环码、香农公式伴随式或单位出错时每道错题在文件头部用三行回填错在哪一类口径、正确公式、对应的代码片段名称。下次复习先跑一遍仿真代码再回看这三行比重新翻答案快得多。真正的收益是把「答案对不上」这件事从情绪问题变成口径问题——差值 3 dB 查噪声谱密度差值 1.76 dB 查信号分布假设带状偏差查 Eb/N0 与 r 的换算三类差值对应三类错因查一次就锁定一处。本文还有配套的精品资源点击获取