数学预备知识:复数运算、向量与矩阵基础、欧拉公式与正弦信号表示

各位同学,欢迎来到波束形成算法的数学预备课。

说实话,很多初学者一上来就啃波束形成的公式,结果被复数、矩阵搞得晕头转向。我当年刚入行时也是这样,拿着阵列信号处理的论文,满篇的共轭转置、特征分解,看得头皮发麻。后来我才明白——数学工具不是障碍,而是你的武器。今天我们就把它彻底搞懂。

1. 复数运算:波束形成的“语言”

波束形成里,信号几乎都是用复数表示的。为什么?因为复数天然能同时描述幅度和相位。你想想看,一个正弦信号有大小、有延迟,复数正好用一个数就搞定了。

1.1 复数的基本形式

复数一般写成:

z = a + jb

其中 a 是实部,b 是虚部,j 是虚数单位(j² = -1)。注意,在信号处理领域我们习惯用 j 而不是 i,因为 i 通常表示电流。

核心概念:复数的模和辐角

  • :|z| = √(a² + b²),代表信号的幅度
  • 辐角:∠z = arctan(b/a),代表信号的相位

我在项目中遇到过一件事:有一次调试相控阵天线,发现波束指向总偏了3度。查了半天,原来是一个复数乘法器的相位精度不够。你看,相位差一点点,波束就歪了。

1.2 复数运算规则

这些是基本功,但很重要:

运算 公式 物理意义
加法 (a+jb) + (c+jd) = (a+c) + j(b+d) 信号叠加
乘法 (a+jb)(c+jd) = (ac-bd) + j(ad+bc) 幅度相乘,相位相加
共轭 z* = a - jb 相位取反,用于波束形成中的权值计算

我的小技巧:复数乘法在极坐标下更好理解。如果 z₁ = |z₁|e^(jθ₁),z₂ = |z₂|e^(jθ₂),那么 z₁·z₂ = |z₁||z₂|e^(j(θ₁+θ₂))。说白了就是模相乘、角度相加。这在波束形成里太常用了。

2. 向量与矩阵基础:阵列信号的“容器”

阵列信号处理,说白了就是把多个天线的信号装进一个向量里。你想想看,一个8元均匀线阵,每个时刻采到的8个复数信号,就是一个8维复数向量。

2.1 向量的基本操作

假设我们有一个阵列,N个阵元,某一时刻的接收信号向量为:

x = [x₁, x₂, ..., xₙ]ᵀ

其中每个 xᵢ 都是复数。

常用的向量操作:

  • 内积:⟨x, y⟩ = xᴴy,用于计算两个信号的相关性
  • 范数:||x|| = √(xᴴx),代表信号的能量
  • 外积:xyᴴ,生成一个矩阵,在协方差矩阵计算中用到

注意:在波束形成中,我们几乎都用 共轭转置(上标 H)而不是普通转置(上标 T)。因为信号是复数,共轭转置才能保证内积是实数。我曾经见过新手用普通转置算协方差矩阵,结果算出来的特征值全是复数,完全没法用。

2.2 矩阵运算:波束形成的核心

波束形成里最重要的矩阵就是协方差矩阵

R = E[x(t) · xᴴ(t)]

这个矩阵包含了所有阵元之间的相位关系信息。它的维度是 N×N,N是阵元数。

常用的矩阵操作:

操作 公式 在波束形成中的用途
矩阵乘法 C = A·B 计算波束输出 y = wᴴx
特征分解 R = UΛUᴴ MUSIC算法、ESPRIT算法
矩阵求逆 R⁻¹ MVDR波束形成器

一个重要的直觉:协方差矩阵 R 的每个元素 Rᵢⱼ 代表第 i 个阵元和第 j 个阵元接收信号之间的相位差信息。对角线元素是各阵元的信号功率,非对角线元素包含了波达方向的信息。

3. 欧拉公式:连接复数和正弦信号的桥梁

欧拉公式是信号处理里最美的公式,没有之一。

e^(jθ) = cos(θ) + j·sin(θ)

这个公式告诉我们什么?一个复数指数可以表示一个正弦信号。你想想看,如果我们让 θ = ωt + φ,那么:

e^(j(ωt+φ)) = cos(ωt+φ) + j·sin(ωt+φ)

这就是一个频率为 ω、初相为 φ 的正弦信号。在波束形成里,我们通常取实部作为实际信号,但用复数形式做运算。

我的理解:欧拉公式的本质是旋转。e^(jθ) 就是单位圆上的一个点,随着 θ 变化,这个点绕圆旋转。频率 ω 就是旋转的速度。阵列信号处理里,不同阵元接收到的信号,其实就是同一个旋转向量在不同位置的投影。

4. 正弦信号的复数表示

在实际的波束形成系统中,我们很少直接用 cos 或 sin 函数做运算。为什么?因为三角函数运算太复杂了。我们用复数指数代替。

一个正弦信号:

s(t) = A·cos(ωt + φ)

可以表示为:

s(t) = Re{A·e^(j(ωt+φ))}

或者更常用的,直接用复包络表示:

s̃(t) = A·e^(jφ) · e^(jωt)

其中 A·e^(jφ) 就是信号的复幅度,包含了幅度和相位信息。在波束形成里,我们通常只关心这个复幅度,因为载波 e^(jωt) 对所有阵元都一样。

核心结论:阵列信号处理中,第 i 个阵元接收到的信号可以写成:

xᵢ(t) = s(t) · e^(-j·2π·dᵢ·sin(θ)/λ)

其中 dᵢ 是阵元位置,θ 是波达方向,λ 是波长。这个 e^(-j·...) 项就是阵元间的相位差,波束形成就是利用这个相位差来估计方向或增强信号。

5. 知识体系总览

说了这么多,我把本章的核心逻辑画成了一张图,方便你整体把握:

数学预备知识体系 复数运算 向量与矩阵 欧拉公式 子知识点 • 复数的模与辐角 • 复数乘法 = 幅度乘 + 相位加 • 共轭运算 子知识点 • 向量内积与范数 • 协方差矩阵 R = E[xxᴴ] • 特征分解与矩阵求逆 子知识点 • e^(jθ) = cosθ + j·sinθ • 复数指数 = 旋转向量 • 频率 = 旋转速度 波束形成算法 阵列信号处理的核心 三者结合:用复数表示信号,用矩阵处理阵列,用欧拉公式理解相位

6. 本章小结

嗯,到这里数学预备知识就讲完了。总结一下:

  • 复数是描述信号幅度和相位的天然工具,记住模和辐角的概念
  • 向量和矩阵是处理阵列信号的容器,协方差矩阵是重中之重
  • 欧拉公式把复数和正弦信号统一起来,让我们能用旋转向量的视角理解信号

我的建议:如果你觉得这些数学概念有点抽象,不妨打开Python,用numpy随便生成几个复数向量,算算内积、看看相位。动手做一遍,比看十遍书都管用。我当年就是这么过来的。


公众号:蓝海资料掘金营,微信deep3321