系列导航 :目录 | 上一章:什么是无线电 | 下一章:电路基础
本章目标:读完本章,你将能够
- 用振幅、频率、相位描述一个正弦信号,把相位差换算成时间差,算出峰值、峰峰值和有效值;
- 用积化和差公式解释"两个频率相乘会产生和频与差频",这是混频器和超外差接收机的数学基础;
- 熟练进行复数的四则运算,在直角坐标和极坐标之间互相转换;
- 理解并证明欧拉公式 ejθ=cosθ+jsinθ,把正弦信号看成复平面上旋转的相量;
- 用相量计算同频正弦的叠加,并用它解释多径衰落;
- 熟练使用 dB、dBm、dBμV、dBi、dBd 和 S 表读数,做出一份完整的链路预算;
- 用 NumPy 处理复数和数组,用 Matplotlib 画图。
前置知识:高中三角函数(和角公式)和对数。第一、三节用到导数和定积分的基本概念,第三节用到泰勒级数(只需知道"函数可以展开成幂级数")。
无线电工程师每天都在和四样数学工具打交道:
- 正弦函数:载波、本振、音频,无线电里几乎所有信号都由正弦波构成;
- 复数:电容、电感的阻抗,正交(IQ)信号,软件无线电里的每一个采样点,都是复数;
- 相量:把"同频正弦的加减和求导"变成"复数的加减和乘法",第 03 章分析交流电路全靠它;
- 分贝:从 100 W 的发射机到 0.2 μV 的接收灵敏度,功率相差 17 个数量级,没有分贝几乎没法讨论。
本章把这四样工具一次讲清楚。每一样都结合无线电的实际例子:负载上的电压、混频器、多径衰落、S 表读数、链路预算。最后用一节介绍 NumPy 和 Matplotlib,后面所有章节的代码都建立在它们之上。
一、正弦信号:无线电的"原子"
1. 三个参数
一个正弦信号可以写成
v(t)=Acos(2πft+φ)=Acos(ωt+φ)
它由三个参数完全确定:
| 符号 | 名称 | 单位 | 含义 |
|---|---|---|---|
| A | 振幅(峰值) | V、A、V/m 等 | 偏离零点的最大值 |
| f | 频率 | Hz | 每秒重复的次数; ω=2πf 是角频率,单位 rad/s |
| φ | 初相位 | 弧度或度 | t=0 时刻处在一个周期的哪个位置 |
本教程统一用余弦 cos 作为"标准"正弦信号,正弦函数可以用 sinx=cos(x−90°) 换过来。角度在公式里一律用弧度,在叙述和图表里为了直观常用度, 180°=π rad。
2. 相位差就是时间差
把 cos(ωt+φ) 改写成 cosω(t+φ/ω),可以看出:初相位 φ 相当于把波形在时间上提前了
Δt=ωφ=360°φT
φ>0 称为超前 , φ<0 称为滞后。

图 1:100 W 发射机接 50 Ω 假负载时,负载两端的电压(f = 7.1 MHz)。虚线超前 60°,相当于提前 T/6。
例如在 7.1 MHz,周期 T=140.8 ns,60° 的相位差对应 140.8/6=23.47 ns 的时间差。在射频电路里,"相位"和"时间延迟"是同一件事的两种说法:一段电缆、一个滤波器让信号延迟了多少纳秒,就等于让它的相位滞后了多少度。
3. 峰值、峰峰值和有效值
描述正弦电压的"大小",常用三个量:
- 峰值 Vp:最大值,即振幅 A;
- 峰峰值 Vpp=2Vp:从最低点到最高点,示波器上最容易直接读出;
- 有效值 (均方根值,RMS) Vrms:产生相同平均功率的直流电压。
有效值的定义是"平方的平均值再开方":
Vrms=T1∫0Tv2(t)dt
对正弦信号,利用 cos2x=21+cos2x:
T1∫0TVp2cos2(ωt)dt=TVp2∫0T21+cos2ωtdt=2Vp2
因为 cos2ωt 在一个周期内的积分为零。所以
Vrms=2 Vp≈0.707Vp
电阻 R 上的平均功率是 P=Vrms2/R。我们平时说的"220 V 市电""100 W 发射机",指的都是有效值和平均功率。
例:100 W 发射机接 50 Ω 假负载。 附录代码算出:
Vrms=PR =100×50 =70.71 V,Vp=100.00 V,Vpp=200.00 V
代码还对一个周期的采样直接求了均方根,结果 70.7107 V,和公式一致。反过来,如果你用示波器(配合衰减器)测出假负载上的峰峰值,就能算出发射功率:
P=RVrms2=R(Vpp/22 )2=8RVpp2
4. 积化和差:两个频率相乘,产生和频与差频
由余弦的和角公式
cos(a+b)=cosacosb−sinasinb,cos(a−b)=cosacosb+sinasinb
两式相加再除以 2,得到积化和差公式:
cosa⋅cosb=21cos(a−b)+21cos(a+b)
令 a=2πf1t、 b=2πf2t,它告诉我们:两个不同频率的正弦信号相乘,结果是两个新的频率:差频 f1−f2 和和频 f1+f2 ,原来的 f1、 f2 反而不见了。

图 2:14.2 MHz 的信号乘以 5.2 MHz 的本振,结果正好是 9.0 MHz 和 19.4 MHz 两个余弦之和。
附录代码在 2 μs 内取了 20 万个采样点,两边的最大误差只有 2.8×10−14,也就是计算机的舍入误差。
这个公式是整个无线电接收技术的基石。接收机里有一个叫混频器 的电路,它把收到的信号和本机振荡器(本振)的信号相乘。比如要收 14.2 MHz 的短波电台,让本振工作在 5.2 MHz,相乘后得到 9.0 MHz 和 19.4 MHz;再用一个固定在 9.0 MHz 的滤波器取出差频,就把任意电台"搬"到了一个固定的中频 上。想收别的电台,只需改变本振频率。这就是阿姆斯特朗发明的超外差原理,第 15 章会详细讨论(包括这个方案带来的"镜像频率"问题,见练习 2)。
另一个常用的特例是 a=b:
cos2(ωt)=21+21cos(2ωt)
一个正弦信号经过"平方"这样的非线性运算,就会产生直流分量和二倍频(二次谐波)。检波器、倍频器的原理是它,发射机为什么会产生谐波干扰、为什么必须加滤波器,原因也是它。**线性电路不会产生新频率,非线性电路会。**这是射频电路里反复出现的主题。
5. 同频正弦相加,还是同频正弦
另一个经常遇到的问题是:两个同频率但振幅、相位不同的正弦信号相加,结果是什么?比如
10cos(ωt+30°)+5cos(ωt−60°)= ?
可以证明结果仍是同一频率的正弦,只是振幅和相位变了。用和角公式展开、合并、再凑回一个余弦,能算出来,但很繁琐。接收天线同时收到直射波和地面反射波时,遇到的就是这个问题。下面两节介绍的复数 和相量,能把它变成简单的向量加法。
二、复数
1. 定义
引入一个数 j,规定
j2=−1
形如 z=a+jb( a、 b 为实数)的数称为复数 , a=Rez 是实部, b=Imz 是虚部。数学和物理书里常用 i,电子工程里习惯用 j,因为 i 已经被电流占用了。Python 也用 j:3 + 4j 就是一个复数。
复数可以画在复平面 上:横轴是实部,纵轴是虚部, z=a+jb 对应点 (a, b),或者从原点指向它的箭头。
2. 四则运算
按普通代数运算,遇到 j2 就换成 −1:
| 运算 | 公式 |
|---|---|
| 加减 | (a+jb)±(c+jd)=(a±c)+j(b±d) |
| 乘法 | (a+jb)(c+jd)=(ac−bd)+j(ad+bc) |
| 共轭 | z∗=a−jb, zz∗=a2+b2 |
| 除法 | c+jda+jb=c2+d2(a+jb)(c−jd)(分子分母同乘分母的共轭) |
以 z1=3+4j、 z2=1−2j 为例,附录代码给出:
| 运算 | 结果 |
|---|---|
| z1+z2 | 4+2j |
| z1−z2 | 2+6j |
| z1z2 | (3+8)+j(−6+4)=11−2j |
| z1/z2 | 1+4(3+4j)(1+2j)=5−5+10j=−1+2j |
| z1∗ | 3−4j |
加减法就是向量的加减(平行四边形法则),这一点后面画相量图时会用到。
3. 极坐标形式
复平面上的点也可以用长度 和角度描述:
∣z∣=a2+b2 ,θ=argz=atan2(b, a)
∣z∣ 称为模 , θ 称为辐角 。反过来, a=∣z∣cosθ, b=∣z∣sinθ。工程上常把复数写成 ∣z∣∠θ,例如 3+4j=5∠53.13°。
注意 atan2 :辐角不能简单地用 arctan(b/a) 计算,因为它分不清 (a, b) 和 (−a, −b)。例如 −1−j 在第三象限,辐角应为 −135°,而 arctan−1−1=45°。附录代码同时算了这两种方法,
atan2给出了正确的 −135°。NumPy 的np.angle内部用的就是 atan2。

图 3:左:复数的直角坐标与极坐标。右:复数乘法,模相乘、角相加;乘以 j 就是逆时针旋转 90°。
极坐标的好处在乘法上特别明显。附录代码算出 z1=5∠53.13°, z2=2.2361∠−63.43°,而
z1z2=11−2j=11.1803∠−10.30°
正好是 5×2.2361=11.1803, 53.13°+(−63.43°)=−10.30°。**复数相乘,模相乘,辐角相加。**为什么会这样,欧拉公式会给出答案。
一个特例: j=1∠90°,所以乘以 j 就是把向量逆时针旋转 90° ,长度不变。 jz1=j(3+4j)=−4+3j,见图 3 右。第 03 章会看到,电感上电压超前电流 90°,正是因为它的阻抗里有一个 j。
三、欧拉公式
1. 公式与证明
ejθ=cosθ+jsinθ
这就是欧拉公式。它把指数函数和三角函数联系在一起,是整个信号处理和射频工程最常用的公式。
证明用泰勒级数。我们知道
ex=n=0∑∞n!xn=1+x+2!x2+3!x3+4!x4+⋯
cosθ=1−2!θ2+4!θ4−⋯,sinθ=θ−3!θ3+5!θ5−⋯
把 x=jθ 代入 ex,利用 j2=−1、 j3=−j、 j4=1,周期为 4:
ejθ=1+jθ−2!θ2−j3!θ3+4!θ4+j5!θ5−⋯
把实部和虚部分开,实部恰好是 cosθ 的级数,虚部恰好是 sinθ 的级数。证毕。
附录代码对 θ=π/3 逐项累加这个级数:
| 累加项数 | 部分和 | 与 cos3π+jsin3π 的误差 |
|---|---|---|
| 2 | 1.000000+j1.047198 | 5.3×10−1 |
| 3 | 0.451689+j1.047198 | 1.9×10−1 |
| 4 | 0.451689+j0.855801 | 4.9×10−2 |
| 6 | 0.501796+j0.866295 | 1.8×10−3 |
| 9 | 0.500000+j0.866021 | 4.2×10−6 |
| 12 | 0.500000+j0.866025 | 3.6×10−9 |
12 项之后误差已经只有 10−9 量级,收敛到 0.5+j0.866025。取 θ=π,得到著名的 ejπ+1=0,代码算出的结果是 1.2×10−16j,同样只是舍入误差。
有了欧拉公式,极坐标就可以写成指数形式:
z=∣z∣∠θ=∣z∣ejθ
复数乘法"模相乘、角相加"也就一目了然: ∣z1∣ejθ1⋅∣z2∣ejθ2=∣z1∣∣z2∣ej(θ1+θ2),指数相乘就是指数相加。
2. 旋转的相量
令 θ=ωt, ejωt 就是复平面单位圆上一个以角速度 ω 逆时针旋转 的点,每秒转 f 圈。它在实轴上的投影是 cosωt,在虚轴上的投影是 sinωt:

图 4:旋转的相量 ejωt。右上:投影到虚轴,得到正弦;左下:投影到实轴,得到余弦(时间轴向下)。
这给了我们看待正弦信号的新视角:一个正弦信号,就是一个旋转相量在实轴上的投影。
把欧拉公式和它的共轭 e−jθ=cosθ−jsinθ 相加、相减,得到
cosθ=2ejθ+e−jθ,sinθ=2jejθ−e−jθ
一个实数余弦等于两个反向旋转 的相量之和:一个逆时针转(频率 +f),一个顺时针转(频率 −f),虚部正好抵消。这就是频谱图上会出现"负频率"的原因,第 04 章讲傅里叶变换、第 19 章讲 IQ 信号时还会回来。
四、相量
1. 定义
对于一个频率已知的正弦信号,利用欧拉公式可以写成
Acos(ωt+φ)=Re{Aejφejωt}
括号里分成了两部分: ejωt 是旋转,所有同频率的信号都一样; Aejφ 是一个不随时间变化的复数 ,记录了这个信号独有的振幅和相位。后者就叫相量(phasor),通常用大写字母表示:
V=Aejφ=A∠φ
在一个只有单一频率的系统里(比如第 03 章的交流电路,或者只看载波的天线问题), ejωt 是公共因子,可以先扔掉,只对相量运算,最后再乘回去取实部。
2. 同频正弦相加 = 相量相加
因为取实部和加法可以交换顺序,
A1cos(ωt+φ1)+A2cos(ωt+φ2)=Re{(V1+V2)ejωt}
**同频正弦相加,只需把相量相加。**回到第一节第 5 小节的问题:
V1=10∠30°=8.660+j5.000,V2=5∠−60°=2.500−j4.330
V1+V2=11.160+j0.670=11.18∠3.43°
所以
10cos(ωt+30°)+5cos(ωt−60°)=11.18cos(ωt+3.43°)

图 5:左:相量图,两个相量首尾相接,像力的合成一样。右:时域核对,逐点相加的结果(绿)和相量算出的正弦(虚线)完全重合。
附录代码在一个周期内取了 360 万个点逐点相加,找到最大值 11.1803,出现在 ωt=356.57° 处,即相位 3.43°,和相量计算完全一致。注意合成振幅 11.18 小于 10+5=15,因为两个分量的相位相差 90°,不是同时达到最大。
3. 应用:多径衰落
接收天线常常同时收到两路信号:一路直射过来,另一路经地面、楼房或山体反射过来。反射路径比直射路径长 Δd,所以反射波晚到,相位滞后
Δφ=2πλΔd
设反射波的振幅是直射波的 a 倍( 0<a<1),以直射波为参考,合成信号的相量是
R=1+ae−jΔφ
它的模的平方为
∣R∣2=(1+acosΔφ)2+(asinΔφ)2=1+a2+2acosΔφ
- 路程差是波长的整数倍时, cosΔφ=1,两路同相 叠加, ∣R∣=1+a;
- 路程差是半波长的奇数倍时, cosΔφ=−1,两路反相 抵消, ∣R∣=1−a。

图 6:直射波加反射波的合成强度随路程差的变化。路程差每变化一个波长,信号就经历一次起伏;反射越强,谷底越深。
当 a=0.8 时,附录代码算出最强为 1.8 倍(+5.11 dB),最弱只有 0.2 倍(−13.98 dB),起伏达 19.1 dB。如果反射波和直射波一样强( a=1),谷底就是 0,信号完全消失。
这就是多径衰落 。在 2 米波段(145 MHz, λ=2.068 m),如果直射波从身后来、反射波从前方的楼房反射回来,两者相向传播,你每移动 λ/2=1.034 m,路程差就变化一个波长,经历一次衰落。开车以 60 km/h(16.67 m/s)行驶时,每秒要穿过 16.1 个"零点",听起来就是信号一阵一阵地"哒哒"抖动,英文叫 picket fencing(栅栏效应)。
这给手台用户一个很实用的建议:信号差的时候,往旁边挪半米试试,也许就从谷底移到了峰顶。第 10 章会进一步讨论多径和衰落的统计规律。
4. 求导变成乘以 jω
相量的另一个重要性质:
dtdRe{Vejωt}=Re{jωVejωt}
对正弦信号求导,在相量上就是乘以 jω :振幅乘以 ω,相位超前 90°。这让微分方程变成了代数方程。
把它用到电感和电容上(第 03 章详细推导):
- 电感: v=Ldtdi,相量形式 V=jωLI,所以电感的阻抗 是 ZL=jωL;
- 电容: i=Cdtdv,相量形式 I=jωCV,所以电容的阻抗是 ZC=jωC1=−ωCj。
在 7.1 MHz,附录代码算出 1 μH 电感的阻抗是 +j44.61 Ω,100 pF 电容的阻抗是 −j224.16 Ω。有了复数阻抗,交流电路就可以像直流电路一样用欧姆定律计算,只是所有量都换成了复数。
五、分贝
1. 为什么要用分贝

图 7:无线电里常见的功率电平,放在同一把"分贝尺"上。上方是对应的线性功率。
无线电里的功率跨度极大:一台 1500 W 的功率放大器输出 +61.8 dBm,而 1 Hz 带宽内的热噪声只有 −174 dBm,两者相差 236 dB,即 1023 倍以上。用瓦特写出来,一个是 1500,一个是 4×10−21,根本没法放在同一张表里比较。
分贝的第二个好处更重要:信号经过一连串放大器、电缆、天线和传播路径,每一级都是乘 上一个增益或损耗;取对数之后,乘法变成加法:
lg(G1G2G3)=lgG1+lgG2+lgG3
这就是为什么无线电工程师总是用 dB 来做"链路预算"。
2. 定义
两个功率之比的分贝数定义为
GdB=10lgP1P2
其中 lg 是以 10 为底的对数。比值大于 1 时 dB 为正(增益),小于 1 时为负(损耗),等于 1 时为 0 dB。
如果比较的是电压 (或电流、场强),由于功率与电压的平方成正比( P=V2/R),在相同阻抗下:
GdB=10lgV12/RV22/R=20lgV1V2
所以电压翻倍是 +6 dB,功率翻倍是 +3 dB ,两者说的是同一件事。注意前提是阻抗相同;比较 50 Ω 和 75 Ω 系统上的电压时,不能直接用 20lg。
3. 速算
记住两个数就够了:3 dB ≈ ×2,10 dB = ×10。其他的都能拼出来,例如 13 dB = 10 dB + 3 dB ≈ ×20,7 dB = 10 dB − 3 dB ≈ ×5,−3 dB ≈ ×½。附录代码列出了 1~10 dB 的精确倍数,以及好记的近似值:
| dB | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|
| 精确倍数 | 1.2589 | 1.5849 | 1.9953 | 2.5119 | 3.1623 | 3.9811 | 5.0119 | 6.3096 | 7.9433 | 10 |
| 速算 | 1.25 | 1.6 | 2 | 2.5 | 3.2 | 4 | 5 | 6.3 | 8 | 10 |
4. 绝对电平:dBm、dBW、dBμV
分贝本来只表示比值 。如果固定一个参考值,它就能表示绝对大小:
| 单位 | 参考值 | 常见用途 |
|---|---|---|
| dBm | 1 mW | 射频功率,最常用 |
| dBW | 1 W | 大功率发射机、卫星 EIRP |
| dBμV | 1 μV | 接收机输入电压、EMC 测量 |
| dBμV/m | 1 μV/m | 电场强度 |
PdBm=10lg1 mWP,所以 dBW = dBm − 30。附录代码列出了几个常见功率:
| 功率 | 1 mW | 1 W | 5 W | 25 W | 100 W | 1500 W |
|---|---|---|---|---|---|---|
| dBm | 0.00 | 30.00 | 36.99 | 43.98 | 50.00 | 61.76 |
在 50 Ω 系统里,0 dBm 对应的电压是 10−3×50 =0.2236 V =106.99 dBμV,所以
dBμV≈dBm+107(50 Ω)
例如手台灵敏度 −121 dBm 相当于 −14 dBμV,也就是 0.2 μV。
5. dBc、dBFS、dBi 和 dBd
还有几个以"相对于什么"命名的分贝单位:
- dBc :相对于载波(carrier)功率。例如"谐波抑制 −43 dBc"表示谐波比载波弱 43 dB;
- dBFS :相对于满量程(full scale),用于 ADC 和软件无线电,0 dBFS 是 ADC 能表示的最大值;
- dBi :天线增益,相对于各向同性(isotropic)天线;
- dBd :天线增益,相对于半波偶极子(dipole)。
dBi 和 dBd 之间差一个固定值:半波偶极子本身相对各向同性天线的增益。半波偶极子的方向图是
U(θ)∝sinθcos(2πcosθ)2
它的方向性系数等于最大辐射强度与平均辐射强度之比:
D=∮UdΩ4πUmax=∫0πsinθcos2(2πcosθ)dθ2
附录代码用数值积分算出 D=1.6409,即 10lg1.6409=2.15 dBi。所以
dBi=dBd+2.15
看天线广告时要留意:同一副天线,标 dBi 的数字比标 dBd 的大 2.15。只写"dB"不写参考的增益数字,最好打个问号。第 09 章会推导这个方向图。
6. S 表
业余电台面板上的S 表 (信号强度表)用 S1~S9 表示收到的信号强度,S9 以上用"S9 + 多少 dB"表示。IARU 第一区的技术建议规定:每个 S 单位相差 6 dB(电压的 2 倍),在 50 Ω 输入端:
- HF(30 MHz 以下):S9 = −73 dBm,即 50 μV;
- VHF 及以上:S9 = −93 dBm,即 5 μV。
附录代码由此推出各级读数:
| S 读数 | HF 电平 | HF 电压 | VHF 电平 | VHF 电压 |
|---|---|---|---|---|
| S1 | −121 dBm | 0.199 μV | −141 dBm | 0.020 μV |
| S3 | −109 dBm | 0.793 μV | −129 dBm | 0.079 μV |
| S5 | −97 dBm | 3.159 μV | −117 dBm | 0.316 μV |
| S7 | −85 dBm | 12.574 μV | −105 dBm | 1.257 μV |
| S9 | −73 dBm | 50.059 μV | −93 dBm | 5.006 μV |
HF 的 S9 + 20 dB 就是 −53 dBm。通联时对方报告"你的信号 S7",你就知道它大约在 −85 dBm。不过要注意,许多电台的 S 表并没有严格按这个标准校准,读数只能作参考。
7. 分贝不能直接相加
一个常见的错误是把两个用 dBm 表示的功率直接相加。正确的做法是先换回瓦特,相加,再换回 dBm:
| 功率 A | 功率 B | A + B |
|---|---|---|
| 0 dBm | 0 dBm | 3.01 dBm |
| −100 dBm | −110 dBm | −99.59 dBm |
| −100 dBm | −120 dBm | −99.96 dBm |
两个相等的功率相加,总功率加 3 dB;一个比另一个弱 20 dB 时,它的贡献几乎可以忽略。这在计算噪声时很有用:290 K 下的热噪声功率谱密度是 kT=−173.98 dBm/Hz,在 12.5 kHz 的 FM 信道带宽内是 −173.98+10lg12500=−133.01 dBm。第 14 章讨论灵敏度时会用到这个数字。
("dB 加 dB"在另一种意义下是对的:增益和损耗可以直接加减,因为它们表示的是乘法关系。一个 20 dB 的放大器后面接一段 3 dB 损耗的电缆,总增益就是 17 dB。)
8. 链路预算
把第 01 章的平方反比公式推广到收发天线都有增益的情况:
Pr=PtGtGr(4πdλ)2
这就是 Friis 传输公式 ,第 10 章会详细推导。其中 (λ4πd)2 称为自由空间路径损耗(FSPL)。取分贝:
PrdBm=PtdBm+GtdBi+GrdBi−FSPLdB
FSPL=20lgλ4πd=20lgdkm+20lgfMHz+32.45
常数 32.45 是把 d 用 km、 f 用 MHz 表示时 20lgc4π×103×106 的值。用它重算第 01 章的例子(5 W、145 MHz、10 km、各向同性天线),得到 −58.69 dBm,和当时的结果一致。
下面是一条更完整的 2 米波段链路:一台 25 W 的车载电台,经过馈线和天线,与 30 km 外的另一个电台通联。天线增益和馈线损耗是假设的典型值,并假设视距无遮挡:
| 项目 | 增益 / 损耗 | 电平 |
|---|---|---|
| 发射功率 25 W | +43.98 dB | 43.98 dBm |
| 发射端馈线损耗(假设) | −1.50 dB | 42.48 dBm |
| 发射天线增益(假设) | +6.00 dB | 48.48 dBm |
| 自由空间路径损耗(30 km) | −105.22 dB | −56.74 dBm |
| 接收天线增益(假设) | +3.00 dB | −53.74 dBm |
| 接收端馈线损耗(假设) | −1.00 dB | −54.74 dBm |
图 8:链路预算的"瀑布图"。每一级增益或损耗都只是在 dB 上加减。
接收功率 −54.74 dBm,比灵敏度高 66.3 dB。这 66 dB 的余量用来抵消现实中的各种额外损耗:山体和建筑物的遮挡、多径衰落、天线没对准、雨雪......第 10 章会逐一讨论。用 dB 做链路预算的好处在于:想改一个条件(比如换一副增益更高的天线),只需在表里改一行加减。
六、对数坐标
第 01 章的电磁波谱、天线尺寸、平方反比图都用了对数坐标 :坐标轴上等距离的刻度代表等倍数而不是等差。1、10、100、1000 之间的距离相等。读对数坐标时记住两点:
- 每一大格(一个十倍程)代表乘以 10。两个大刻度之间的小刻度依次是 2、3、...、9 倍,越往右越挤;
- 在双对数坐标上,幂函数 y=xn 是一条直线,斜率等于 n。所以第 01 章图 7 里,接收功率(dBm)对距离(对数坐标)的曲线是一条直线:距离每增加 10 倍,功率下降 20 dB。
纵轴用 dB 表示时,它本身就已经是对数了,所以纵轴不需要再取对数坐标。
七、Python 上手:NumPy 与 Matplotlib
本教程的所有计算和配图都用 Python 完成。只需要两个库:
- NumPy:数组运算,原生支持复数;
- Matplotlib:画图。
安装好 Python 3 之后,在命令行运行:
bash
python -m pip install numpy matplotlib
附录 C 会详细介绍环境配置。下面这段代码把本章的几个计算串起来:
python
import numpy as np
z1, z2 = 3 + 4j, 1 - 2j
print(z1 * z2, z1 / z2) # 复数的乘除
print(abs(z1), np.angle(z1, deg=True)) # 模和辐角(度)
V = 10 * np.exp(1j * np.radians(30)) + 5 * np.exp(1j * np.radians(-60))
print(abs(V), np.angle(V, deg=True)) # 相量相加
P = np.array([0.001, 1, 5, 100]) # 功率,单位 W
print(10 * np.log10(P / 1e-3)) # 一次性换算成 dBm
输出:
text
(11-2j) (-1+2j)
5.0 53.13010235415598
11.180339887498949 3.434948822922008
[ 0. 30. 36.98970004 50. ]
几个要点:
- 复数是 Python 的内置类型 :
3 + 4j直接就是复数,abs()求模;NumPy 的np.angle(z, deg=True)求辐角,np.exp(1j * theta)就是欧拉公式; - 向量化:NumPy 的函数作用在整个数组上,例如最后一行一次算出了四个功率的 dBm,不需要写循环。后面处理成千上万个采样点时,这既简洁又快;
- 画图 :Matplotlib 的基本用法是
plt.plot(x, y)画曲线、plt.xlabel()加坐标轴标题、plt.show()显示。附录代码最后画出了图 4 的简化版。每一章的配图脚本make_figures.py都放在文章旁边,可以对照着学习更多画法。
小结
- 正弦信号 Acos(ωt+φ) 由振幅、频率、相位三个参数确定。相位差等于时间差: Δt=360°φT。正弦电压的有效值 Vrms=Vp/2 ,电阻上的平均功率 P=Vrms2/R=Vpp2/8R。
- 积化和差 : cosacosb=21cos(a−b)+21cos(a+b)。两个频率相乘产生和频与差频,这是混频器和超外差接收机的原理;非线性运算会产生新频率,线性运算不会。
- 复数 a+jb=∣z∣∠θ,辐角用 atan2 计算。加减按分量,乘除按极坐标:模相乘除、角相加减。乘以 j 等于旋转 90°。
- 欧拉公式 ejθ=cosθ+jsinθ,可由泰勒级数证明。 ejωt 是复平面上旋转的相量,正弦信号是它的投影; cosθ 等于两个反向旋转相量之和,由此引出负频率。
- 相量 V=Aejφ 记录正弦信号的振幅和相位。同频正弦相加就是相量相加,求导就是乘以 jω,由此得到电感、电容的阻抗 jωL、 1/(jωC)。
- 多径衰落 :直射波与反射波的合成 ∣1+ae−j2πΔd/λ∣ 在 1−a 与 1+a 之间起伏,路程差每变化一个波长起伏一次。
- 分贝 :功率比 10lg,电压比 20lg(同阻抗)。3 dB ≈ ×2,10 dB = ×10。dBm 以 1 mW 为参考,50 Ω 下 dBμV ≈ dBm + 107;dBi = dBd + 2.15;S9 在 HF 为 −73 dBm、VHF 为 −93 dBm,每个 S 单位 6 dB。增益和损耗可以直接加减,两个功率相加则必须先换回瓦特。
- 链路预算 : Pr=Pt+Gt+Gr−FSPL, FSPL=20lgdkm+20lgfMHz+32.45。
下一章,我们用这些工具分析电路:电阻、电容、电感、复数阻抗,以及无线电里最重要的电路之一------LC 谐振回路。
练习题
- (有效值) 用示波器测得 50 Ω 假负载两端的电压峰峰值为 63.2 V。发射机的输出功率是多少?
- (混频与镜像) 一台接收机的中频是 9.0 MHz。要接收 7.100 MHz 的信号,本振调到 16.100 MHz。(a) 混频后得到哪两个频率?(b) 另外还有一个输入频率,和这个本振混频后也会落在 9.0 MHz 上,它是多少?
- (复数运算) 计算 (2+j)(1−3j) 和 1−3j2+j,结果分别写成直角坐标和极坐标形式。
- (相量) (a) 三个振幅都是 1、相位分别为 0°、120°、240° 的同频正弦相加,结果是什么?(b) 把 3cosωt+4sinωt 写成 Acos(ωt+φ) 的形式。
- (dB 速算) 不用计算器,估算 23 dB、17 dB、−7 dB、36 dB 各对应多少倍功率,再用计算器核对。
- (绝对电平) (a) 0.5 W 是多少 dBm?(b) 50 Ω 系统中的 −107 dBm 约等于多少 dBμV、多少 μV?(c) HF 波段对方报告你的信号从 S5 升到了 S9,信号功率增加了多少 dB、多少倍?
- (馈线损耗) 一段 30 m 长的同轴电缆,假设它在 145 MHz 的损耗为 6 dB/100 m。电台输出 50 W,到达天线的功率是多少?
- (多径) 如果反射波振幅只有直射波的一半( a=0.5),合成信号的最强和最弱分别是多少 dB?
- (编程:链路预算) 修改附录代码第 9 部分,把距离从 30 km 改为 60 km,接收功率和余量各是多少?距离每增加一倍,路径损耗增加多少 dB?
- (噪声相加) 两个互不相关的噪声源功率相等,叠加后总噪声比单个噪声源高多少 dB?如果两路信号完全同相 (比如练习 8 中直射波和反射波同相、 a=1),叠加后功率又高多少 dB?两者为什么不同?
参考答案
- Vp=31.6 V, Vrms=31.6/2 =22.34 V, P=22.342/50= 9.99 W ,约 10 W。或者直接用 P=Vpp2/8R=63.22/400=9.99 W。
- (a) 差频 16.1−7.1= 9.0 MHz ,和频 16.1+7.1= 23.2 MHz 。中频滤波器选出 9.0 MHz。(b) 输入为 16.1+9.0= 25.1 MHz 时,差频 ∣25.1−16.1∣=9.0 MHz,同样落进中频。25.1 MHz 称为 7.1 MHz 的镜像频率,它和有用信号关于本振对称。如果不在混频器前面把它滤掉,25.1 MHz 上的电台就会混进来。第 15 章专门讨论这个问题。
- (2+j)(1−3j)=2−6j+j−3j2= 5−5j =7.071∠−45°; 1−3j2+j=10(2+j)(1+3j)=10−1+7j= −0.1+0.7j =0.7071∠98.13°。用极坐标核对: 5 ∠26.57°×10 ∠−71.57°=50 ∠−45°;相除则是 0.5 ∠98.13°。
- (a) 三个相量 1∠0°、 1∠120°、 1∠240° 首尾相接构成一个闭合的等边三角形,和为 0 (代码算出的模是 3×10−16)。这就是三相交流电在平衡负载下中性线电流为零的原因。(b) sinωt=cos(ωt−90°),相量为 −j,所以总相量为 3−4j=5∠−53.13°,即 5cos(ωt−53.13°)。
- 23 dB = 20 + 3 ≈ 100 × 2 = 200 (精确值 199.5);17 dB = 20 − 3 ≈ 100 ÷ 2 = 50 (50.1);−7 dB = −10 + 3 ≈ 0.1 × 2 = 0.2 (0.1995);36 dB = 30 + 6 ≈ 1000 × 4 = 4000(3981)。
- (a) 10lg(500)= 26.99 dBm 。(b) −107+107= 0 dBμV ,即约 1 μV (精确地说是 −0.01 dBμV)。(c) S5 到 S9 是 4 个 S 单位,24 dB ,功率增加 102.4≈ 251 倍(电压增加 16 倍)。
- 损耗 30×6/100=1.8 dB,到达天线的功率 50×10−0.18= 33.0 W,有约 17 W 变成了电缆里的热量。接收时,天线收到的信号同样要损失 1.8 dB。所以在 VHF/UHF,低损耗电缆和尽量短的馈线很重要。
- 最强 20lg1.5= +3.52 dB ,最弱 20lg0.5= −6.02 dB ,起伏 9.5 dB,比 a=0.8 时的 19.1 dB 小得多(图 6 中的橙色虚线)。
- 60 km 时 FSPL = 111.24 dB,接收功率 −60.76 dBm ,余量 60.2 dB 。距离加倍,FSPL 增加 20lg2= 6.02 dB(自由空间里的"6 dB 每倍程"规律)。
- 不相关的噪声按功率 相加: 10lg2= +3.01 dB 。同相的两路信号按电压 (相量)相加:振幅加倍,功率变为 4 倍,+6.02 dB (就是 a=1 时多径的峰值, 20lg2)。区别在于相关性:同相信号的电压时时刻刻都在互相加强;不相关的噪声有时加强、有时抵消,平均下来只有功率可加。天线阵列和分集接收正是利用了这一差别:把多路信号同相相加,信号增加 6 dB,而噪声只增加 3 dB。
参考资料
- W. H. Hayt, J. E. Kemmerly, J. D. Phillips, S. M. Durbin. Engineering Circuit Analysis. 9th ed. McGraw-Hill, 2018. 第 10 章(正弦稳态分析与相量)。
- R. G. Lyons. Understanding Digital Signal Processing. 3rd ed. Prentice Hall, 2010. 附录 A(复数)、第 8 章(正交信号)。
- P. J. Nahin. An Imaginary Tale: The Story of √−1. Princeton University Press, 1998.
- ARRL. The ARRL Handbook for Radio Communications. 最新版. "Electrical Fundamentals" 与 "Radio Fundamentals" 章节。
- IARU Region 1. Technical Recommendation R.1: S-meter calibration. 1981.
- T. S. Rappaport. Wireless Communications: Principles and Practice. 2nd ed. Prentice Hall, 2002. 第 4 章(自由空间传播与链路预算)、第 5 章(多径衰落)。
附录:完整代码
下面的代码复现了本章所有数值:正弦信号的峰值与有效值、相位差折合的时间差、积化和差的数值验证、复数运算、欧拉公式的泰勒级数逼近、相量相加及其时域核对、多径衰落、电感和电容的阻抗、分贝速算表、dBm 与 dBμV、S 表、功率相加、热噪声、半波偶极子的 dBi,以及链路预算,最后画出旋转相量与它的投影。只依赖 numpy 和 matplotlib,保存为 example.py 后运行 python example.py 即可。
python
"""无线电自学教程 02:数学工具箱 ------ 附录代码
1. 正弦信号:峰值、峰峰值、有效值;相位差折合成时间差;
2. 积化和差:两个余弦相乘得到和频与差频(混频器的数学原理);
3. 复数运算:加减乘除、模与辐角、极坐标;
4. 欧拉公式:用泰勒级数逼近 e^{jθ},验证 e^{jπ} + 1 = 0;
5. 相量:两个同频正弦相加,用相量求和并用时域采样核对;
6. 多径:直射波与反射波的相量和,衰落的深度与快慢;
7. 阻抗预览:电感 jωL、电容 1/(jωC);
8. 分贝:速算口诀、dBm 与 dBμV、S 表、功率相加、半波偶极子的 dBi;
9. 链路预算:自由空间路径损耗与一条 2 米波段链路的预算表;
最后画出旋转相量与它在实轴上的投影。
运行:python example.py
"""
import cmath
import math
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = ["Microsoft YaHei", "SimHei", "DejaVu Sans"]
plt.rcParams["axes.unicode_minus"] = False
C = 299_792_458.0 # 光速 [m/s]
def db(x):
"""功率比 → dB。"""
return 10 * np.log10(x)
def dbm(p_watt):
return 10 * np.log10(p_watt / 1e-3)
def watt(p_dbm):
return 1e-3 * 10 ** (p_dbm / 10)
def polar_str(z):
return f"{abs(z):.4f}∠{np.degrees(np.angle(z)):.2f}°"
def rect_str(z):
sign = "+" if z.imag >= 0 else "-"
return f"{z.real:.3f} {sign} j{abs(z.imag):.3f}"
# ---------------- 1. 正弦信号 ----------------
print("=== 1. 正弦信号:100 W 发射机接 50 Ω 假负载 ===")
P, R = 100.0, 50.0
v_rms = math.sqrt(P * R)
v_p = v_rms * math.sqrt(2)
print(f"有效值 V_rms = sqrt(P·R) = {v_rms:.2f} V,峰值 V_p = {v_p:.2f} V,峰峰值 V_pp = {2 * v_p:.2f} V")
t = np.linspace(0, 1, 100_000, endpoint=False) # 一个周期(归一化)
v = v_p * np.cos(2 * np.pi * t)
print(f"数值积分:一个周期内 v^2 的平均值开方 = {np.sqrt(np.mean(v**2)):.4f} V")
f, phi = 7.1e6, 60.0
print(f"7.1 MHz 时,60 度相位差相当于 {phi / 360 / f * 1e9:.2f} ns 的时间差")
# ---------------- 2. 积化和差 ----------------
print("\n=== 2. 积化和差:cos a · cos b = [cos(a-b) + cos(a+b)] / 2 ===")
f1, f2 = 14.2e6, 5.2e6
t = np.linspace(0, 2e-6, 200_001)
lhs = np.cos(2 * np.pi * f1 * t) * np.cos(2 * np.pi * f2 * t)
rhs = 0.5 * (np.cos(2 * np.pi * (f1 - f2) * t) + np.cos(2 * np.pi * (f1 + f2) * t))
print(f"两边最大误差 {np.max(np.abs(lhs - rhs)):.1e}")
print(f"{f1 / 1e6} MHz × {f2 / 1e6} MHz → 差频 {(f1 - f2) / 1e6:.1f} MHz,和频 {(f1 + f2) / 1e6:.1f} MHz")
# ---------------- 3. 复数运算 ----------------
print("\n=== 3. 复数运算 ===")
z1, z2 = 3 + 4j, 1 - 2j
print(f"z1 = {z1},z2 = {z2}")
print(f"z1 + z2 = {z1 + z2},z1 - z2 = {z1 - z2}")
print(f"z1 · z2 = {z1 * z2},z1 / z2 = {z1 / z2}")
print(f"|z1| = {abs(z1)},arg z1 = {np.degrees(np.angle(z1)):.2f}°,共轭 = {z1.conjugate()}")
print(f"极坐标:z1 = {polar_str(z1)},z2 = {polar_str(z2)},z1·z2 = {polar_str(z1 * z2)}")
print(f" 模相乘 {abs(z1) * abs(z2):.4f},角相加 "
f"{np.degrees(np.angle(z1) + np.angle(z2)):.2f}°")
print(f"arg(-1 - 1j):atan(b/a) 给出 {np.degrees(np.arctan(-1 / -1)):.0f}°,"
f"atan2 给出 {np.degrees(np.arctan2(-1, -1)):.0f}°(正确)")
# ---------------- 4. 欧拉公式 ----------------
print("\n=== 4. 欧拉公式:e^{jθ} = cos θ + j sin θ ===")
theta = np.pi / 3
target = complex(np.cos(theta), np.sin(theta))
partial = 0
for n in range(12):
partial += (1j * theta) ** n / math.factorial(n)
if n in (1, 2, 3, 5, 8, 11):
print(f"泰勒级数前 {n + 1:2d} 项:{partial.real:.6f} + j{partial.imag:.6f},"
f"误差 {abs(partial - target):.1e}")
print(f"cos(π/3) + j sin(π/3) = {target.real:.6f} + j{target.imag:.6f}")
print(f"e^(jπ) + 1 = {cmath.exp(1j * np.pi) + 1:.1e}")
# ---------------- 5. 相量相加 ----------------
print("\n=== 5. 相量:10 cos(ωt + 30°) + 5 cos(ωt - 60°) ===")
p1 = 10 * cmath.exp(1j * np.radians(30))
p2 = 5 * cmath.exp(1j * np.radians(-60))
ps = p1 + p2
print(f"V1 = {rect_str(p1)},V2 = {rect_str(p2)}")
print(f"V1 + V2 = {rect_str(ps)} = {polar_str(ps)}")
wt = np.linspace(0, 2 * np.pi, 3_600_001)
s = 10 * np.cos(wt + np.radians(30)) + 5 * np.cos(wt - np.radians(60))
k = np.argmax(s)
print(f"时域采样核对:最大值 {s[k]:.4f},出现在 ωt = {np.degrees(wt[k]):.2f}°,"
f"即相位 {-np.degrees(wt[k]) % 360:.2f}°")
# ---------------- 6. 多径 ----------------
print("\n=== 6. 多径:直射波 1 + 反射波 0.8·e^{-jΔφ} ===")
a_ref = 0.8
print(f"同相叠加:{1 + a_ref:.1f} 倍({20 * np.log10(1 + a_ref):+.2f} dB),"
f"反相抵消:{1 - a_ref:.1f} 倍({20 * np.log10(1 - a_ref):+.2f} dB),"
f"起伏 {20 * np.log10((1 + a_ref) / (1 - a_ref)):.1f} dB")
lam = C / 145e6
speed = 60 / 3.6
print(f"145 MHz:λ = {lam:.3f} m。直射波与反射波相向而来时,零点间隔 λ/2 = {lam / 2:.3f} m")
print(f"车速 60 km/h({speed:.2f} m/s)时,每秒穿过 {speed / (lam / 2):.1f} 个零点")
# ---------------- 7. 阻抗预览 ----------------
print("\n=== 7. 阻抗:Z_L = jωL,Z_C = 1/(jωC) ===")
f = 7.1e6
w = 2 * np.pi * f
L, Cap = 1e-6, 100e-12
zl, zc = 1j * w * L, 1 / (1j * w * Cap)
print(f"f = 7.1 MHz:1 μH 电感 Z = {zl.real:.0f} + j{zl.imag:.2f} Ω,"
f"100 pF 电容 Z = {zc.real:.0f} - j{-zc.imag:.2f} Ω")
# ---------------- 8. 分贝 ----------------
print("\n=== 8. 分贝 ===")
print("dB 数 精确倍数 口诀")
trick = {1: "1.25", 2: "1.6", 3: "2", 4: "2.5", 5: "3.2", 6: "4", 7: "5", 8: "6.3",
9: "8", 10: "10"}
for n in range(1, 11):
print(f"{n:4d} {10 ** (n / 10):9.4f} {trick[n]}")
print("功率与 dBm:")
for p in (1e-3, 1.0, 5.0, 25.0, 100.0, 1500.0):
print(f" {p:>8g} W = {dbm(p):7.2f} dBm")
v0 = math.sqrt(1e-3 * 50)
print(f"50 Ω 上 0 dBm 的电压 = {v0:.4f} V = {20 * np.log10(v0 / 1e-6):.2f} dBμV")
print("S 表(IARU 第一区建议:每个 S 单位 6 dB,50 Ω):")
for s_unit in (1, 3, 5, 7, 9):
hf = -73 - 6 * (9 - s_unit)
vhf = hf - 20
print(f" S{s_unit}:HF {hf:5d} dBm({math.sqrt(watt(hf) * 50) * 1e6:7.3f} μV),"
f"VHF {vhf:5d} dBm({math.sqrt(watt(vhf) * 50) * 1e6:7.3f} μV)")
print(f" S9+20 dB(HF)= {-73 + 20} dBm")
print("功率相加(不相关信号):")
for a, b in ((0, 0), (-100, -110), (-100, -120)):
print(f" {a} dBm + {b} dBm = {dbm(watt(a) + watt(b)):.2f} dBm")
kT = 1.380649e-23 * 290
print(f"290 K 热噪声:{dbm(kT):.2f} dBm/Hz;12.5 kHz 带宽内 {dbm(kT * 12.5e3):.2f} dBm")
th = np.linspace(1e-6, np.pi - 1e-6, 200_001)
pattern = (np.cos(np.pi / 2 * np.cos(th)) / np.sin(th)) ** 2 # 半波偶极子的功率方向图
D = 2 / np.trapezoid(pattern * np.sin(th), th) # D = 4π U_max / ∮U dΩ
print(f"半波偶极子方向性系数 D = {D:.4f} = {db(D):.2f} dBi,所以 0 dBd = {db(D):.2f} dBi")
# ---------------- 9. 链路预算 ----------------
print("\n=== 9. 链路预算:145 MHz,30 km,视距无遮挡 ===")
const = 20 * np.log10(4 * np.pi * 1e3 * 1e6 / C)
print(f"FSPL = 20lg(d/km) + 20lg(f/MHz) + {const:.2f} dB")
d, f = 30e3, 145e6
fspl = 20 * np.log10(4 * np.pi * d / (C / f))
budget = [("发射功率 25 W", dbm(25.0)), ("发射端馈线损耗(假设)", -1.5),
("发射天线增益(假设)", 6.0), ("自由空间路径损耗", -fspl),
("接收天线增益(假设)", 3.0), ("接收端馈线损耗(假设)", -1.0)]
level = 0.0
for name, val in budget:
level += val
print(f" {val:+8.2f} dB → {level:8.2f} dBm {name}")
print(f"接收功率 {level:.2f} dBm,比灵敏度 -121 dBm 高 {level + 121:.1f} dB")
print(f"核对:只用 FSPL 算第 01 章的 5 W、10 km:{dbm(5.0) - 20 * np.log10(4 * np.pi * 1e4 / (C / 145e6)):.2f} dBm")
# ---------------- 画图:旋转相量与它的投影 ----------------
wt = np.linspace(0, 4 * np.pi, 400)
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4), gridspec_kw=dict(width_ratios=[1, 2]))
ax1.plot(np.cos(wt), np.sin(wt), color="#b0afa9")
ang = np.radians(50)
ax1.annotate("", xy=(np.cos(ang), np.sin(ang)), xytext=(0, 0),
arrowprops=dict(arrowstyle="-|>", color="#2a78d6", lw=2))
ax1.plot([np.cos(ang)] * 2, [0, np.sin(ang)], "--", color="#eb6834")
ax1.set_aspect("equal")
ax1.set_title(r"$e^{j\omega t}$ 在复平面上旋转")
ax2.plot(wt, np.cos(wt), color="#eb6834", label=r"实部 $\cos\omega t$")
ax2.plot(wt, np.sin(wt), color="#2a78d6", label=r"虚部 $\sin\omega t$")
ax2.set_xlabel(r"$\omega t$ (rad)")
ax2.legend()
for ax in (ax1, ax2):
ax.grid(True, color="#e6e5e1")
fig.tight_layout()
plt.show()
运行后的完整输出:
text
=== 1. 正弦信号:100 W 发射机接 50 Ω 假负载 ===
有效值 V_rms = sqrt(P·R) = 70.71 V,峰值 V_p = 100.00 V,峰峰值 V_pp = 200.00 V
数值积分:一个周期内 v^2 的平均值开方 = 70.7107 V
7.1 MHz 时,60 度相位差相当于 23.47 ns 的时间差
=== 2. 积化和差:cos a · cos b = [cos(a-b) + cos(a+b)] / 2 ===
两边最大误差 2.8e-14
14.2 MHz × 5.2 MHz → 差频 9.0 MHz,和频 19.4 MHz
=== 3. 复数运算 ===
z1 = (3+4j),z2 = (1-2j)
z1 + z2 = (4+2j),z1 - z2 = (2+6j)
z1 · z2 = (11-2j),z1 / z2 = (-1+2j)
|z1| = 5.0,arg z1 = 53.13°,共轭 = (3-4j)
极坐标:z1 = 5.0000∠53.13°,z2 = 2.2361∠-63.43°,z1·z2 = 11.1803∠-10.30°
模相乘 11.1803,角相加 -10.30°
arg(-1 - 1j):atan(b/a) 给出 45°,atan2 给出 -135°(正确)
=== 4. 欧拉公式:e^{jθ} = cos θ + j sin θ ===
泰勒级数前 2 项:1.000000 + j1.047198,误差 5.3e-01
泰勒级数前 3 项:0.451689 + j1.047198,误差 1.9e-01
泰勒级数前 4 项:0.451689 + j0.855801,误差 4.9e-02
泰勒级数前 6 项:0.501796 + j0.866295,误差 1.8e-03
泰勒级数前 9 项:0.500000 + j0.866021,误差 4.2e-06
泰勒级数前 12 项:0.500000 + j0.866025,误差 3.6e-09
cos(π/3) + j sin(π/3) = 0.500000 + j0.866025
e^(jπ) + 1 = 0.0e+00+1.2e-16j
=== 5. 相量:10 cos(ωt + 30°) + 5 cos(ωt - 60°) ===
V1 = 8.660 + j5.000,V2 = 2.500 - j4.330
V1 + V2 = 11.160 + j0.670 = 11.1803∠3.43°
时域采样核对:最大值 11.1803,出现在 ωt = 356.57°,即相位 3.43°
=== 6. 多径:直射波 1 + 反射波 0.8·e^{-jΔφ} ===
同相叠加:1.8 倍(+5.11 dB),反相抵消:0.2 倍(-13.98 dB),起伏 19.1 dB
145 MHz:λ = 2.068 m。直射波与反射波相向而来时,零点间隔 λ/2 = 1.034 m
车速 60 km/h(16.67 m/s)时,每秒穿过 16.1 个零点
=== 7. 阻抗:Z_L = jωL,Z_C = 1/(jωC) ===
f = 7.1 MHz:1 μH 电感 Z = 0 + j44.61 Ω,100 pF 电容 Z = 0 - j224.16 Ω
=== 8. 分贝 ===
dB 数 精确倍数 口诀
1 1.2589 1.25
2 1.5849 1.6
3 1.9953 2
4 2.5119 2.5
5 3.1623 3.2
6 3.9811 4
7 5.0119 5
8 6.3096 6.3
9 7.9433 8
10 10.0000 10
功率与 dBm:
0.001 W = 0.00 dBm
1 W = 30.00 dBm
5 W = 36.99 dBm
25 W = 43.98 dBm
100 W = 50.00 dBm
1500 W = 61.76 dBm
50 Ω 上 0 dBm 的电压 = 0.2236 V = 106.99 dBμV
S 表(IARU 第一区建议:每个 S 单位 6 dB,50 Ω):
S1:HF -121 dBm( 0.199 μV),VHF -141 dBm( 0.020 μV)
S3:HF -109 dBm( 0.793 μV),VHF -129 dBm( 0.079 μV)
S5:HF -97 dBm( 3.159 μV),VHF -117 dBm( 0.316 μV)
S7:HF -85 dBm( 12.574 μV),VHF -105 dBm( 1.257 μV)
S9:HF -73 dBm( 50.059 μV),VHF -93 dBm( 5.006 μV)
S9+20 dB(HF)= -53 dBm
功率相加(不相关信号):
0 dBm + 0 dBm = 3.01 dBm
-100 dBm + -110 dBm = -99.59 dBm
-100 dBm + -120 dBm = -99.96 dBm
290 K 热噪声:-173.98 dBm/Hz;12.5 kHz 带宽内 -133.01 dBm
半波偶极子方向性系数 D = 1.6409 = 2.15 dBi,所以 0 dBd = 2.15 dBi
=== 9. 链路预算:145 MHz,30 km,视距无遮挡 ===
FSPL = 20lg(d/km) + 20lg(f/MHz) + 32.45 dB
+43.98 dB → 43.98 dBm 发射功率 25 W
-1.50 dB → 42.48 dBm 发射端馈线损耗(假设)
+6.00 dB → 48.48 dBm 发射天线增益(假设)
-105.22 dB → -56.74 dBm 自由空间路径损耗
+3.00 dB → -53.74 dBm 接收天线增益(假设)
-1.00 dB → -54.74 dBm 接收端馈线损耗(假设)
接收功率 -54.74 dBm,比灵敏度 -121 dBm 高 66.3 dB
核对:只用 FSPL 算第 01 章的 5 W、10 km:-58.69 dBm