中EN
概念页

信号与线性时不变系统

Signals & LTI Systems

信号与系统理论是几乎所有数字音频技术的数学基础,也用于图像处理、电子、流体等领域。核心结论是:线性时不变 (LTI) 系统完全由它的冲激响应 hh 描述,任意输入的输出等于输入与 hh 的卷积;借助傅里叶变换,时域卷积等于频域乘法,滤波器就是在频域里按频率响应 H(ω)H(\omega) 衰减部分频率(GEA4 卷 II 15.2)。

信号

信号是一个或多个自变量的函数,描述某种物理现象:声压 p(t)p(t)、麦克风电压 v(t)v(t),甚至灰度图像 i(x,y)i(x,y)(彩色图像是 r,g,br,g,b 三个信号)(卷 II 15.2.1)。

  • 连续时间信号:自变量是实数,记作 x(t)x(t);
  • 离散时间信号:自变量是整数,记作 x[n]x[n](值仍可以是实数)。离散信号可看作连续信号的采样,见 数字音频技术(卷 II 15.2.1.1)。

对自变量的简单变换(卷 II 15.2.2):用 −t-t 代替 tt 是关于 t=0t=0 翻转;t−st-s 是右移 ss;2t2t 是压缩时间轴。

系统与 LTI

系统把输入信号变成输出信号,例如增益为 AA 的放大器 y(t)=Ax(t)y(t)=Ax(t);麦克风、扬声器、A/D 转换器、混响器、均衡器、滤波器乃至房间声学都可以看成系统(卷 II 15.2.3)。

  • 时不变:输入平移多少,输出也平移多少;
  • 线性:满足叠加性,加权和的输入得到各自输出的加权和。

LTI 系统数学上好处理,又能准确模拟许多真实系统,所以 GEA 只讨论它。系统可以串联、并联(输出相加)或接成反馈回路;LTI 系统串联的顺序可以互换,输出不变。

下图示意三种连接方式(对应 GEA 图 15.10):串联 y=B(A(x))y=B(A(x)),并联 y=aA(x)+bB(x)y=aA(x)+bB(x),反馈 y=x−ay˙y=x-a\dot y。

flowchart LR
  subgraph "串联"
    x1[x] --> A1[A] --> B1[B] --> y1[y]
  end
  subgraph "并联"
    x2[x] --> A2["a·A"] --> S2((+))
    x2 --> B2["b·B"] --> S2 --> y2[y]
  end

冲激响应与卷积

单位冲激:离散时 δ[n]\delta[n] 只在 n=0n=0 处为 1;连续时 δ(t)\delta(t) 定义为宽 TT、高 1/T1/T 的盒函数在 T→0T\to0 时的极限,面积恒为 1(卷 II 15.2.4.1)。任意信号都能写成平移、加权冲激的和(式 15.4、15.5):

x[n]=∑k=−∞+∞x[k] δ[n−k],x(t)=∫−∞+∞x(τ) δ(t−τ) dτx[n]=\sum_{k=-\infty}^{+\infty}x[k]\,\delta[n-k],\qquad x(t)=\int_{-\infty}^{+\infty}x(\tau)\,\delta(t-\tau)\,d\tau

系统对 δ[n]\delta[n] 的输出 h[n]h[n] 叫冲激响应。由线性和时不变性,x[k]δ[n−k]⇒x[k]h[n−k]x[k]\delta[n-k]\Rightarrow x[k]h[n-k],求和即得卷积和(式 15.6、15.7),连续时为卷积积分(式 15.8、15.9):

y[n]=x[n]∗h[n]=∑kx[k] h[n−k],y(t)=x(t)∗h(t)=∫x(τ) h(t−τ) dτy[n]=x[n]*h[n]=\sum_{k}x[k]\,h[n-k],\qquad y(t)=x(t)*h(t)=\int x(\tau)\,h(t-\tau)\,d\tau

所以对 LTI 系统,冲激响应完全刻画系统(卷 II 15.2.4.3)。计算某个 tt 处的值:画出 x(τ)x(\tau);把 hh 翻转并平移 tt 得到 h(t−τ)h(t-\tau);两者相乘;沿 τ\tau 积分求面积。每个 tt 都要重复一遍(卷 II 15.2.4.4)。卷积满足交换律 x∗h=h∗xx*h=h*x、结合律 x∗(h1∗h2)=(x∗h1)∗h2x*(h_1*h_2)=(x*h_1)*h_2 和分配律 x∗(h1+h2)=x∗h1+x∗h2x*(h_1+h_2)=x*h_1+x*h_2,与普通乘法类似(卷 II 15.2.4.5;渲染页 p.446 括号完整,早先因 PDF 文本层丢括号而记的"原书问题"已撤回)。

复数与欧拉公式

正弦信号的一般形式是 x(t)=Acos⁡(ω0t+ϕ)x(t)=A\cos(\omega_0t+\phi)(式 15.10),AA 是振幅,ω0\omega_0 是角频率,ϕ\phi 是相位偏移(卷 II 15.2.5.1)。A=1,ω0=1,ϕ=0A=1,\omega_0=1,\phi=0 时就是 cos⁡t\cos t;取 ϕ=−π/2\phi=-\pi/2 得 sin⁡t\sin t。

原书问题:15.2.5.1 写"当 ϕ=π/2\phi=\pi/2 时表达式变为 x(t)=sin⁡tx(t)=\sin t"(已核对渲染页 p.446)。实际 cos⁡(t+π/2)=−sin⁡t\cos(t+\pi/2)=-\sin t,应为 ϕ=−π/2\phi=-\pi/2。GEA 自己在 15.1.1 写的是 sin⁡t=cos⁡(t−π/2)\sin t=\cos(t-\pi/2),两处矛盾(恒等式见 Wikipedia "List of trigonometric identities" 的平移公式)。

用复数表示更方便用复数表示更方便(卷 II 15.2.5.2):

  • c=a+jbc=a+jb,j=−1j=\sqrt{-1};模 ∣c∣=a2+b2|c|=\sqrt{a^2+b^2},辐角 arg⁡c=tan⁡−1(b/a)\arg c=\tan^{-1}(b/a)(辐角也叫相位)。复数可以画成阿尔冈平面 (Argand plane) 上的二维"向量" [a,b][a,b],但复数和向量的运算规则不同,不能互换。

    注:tan⁡−1(b/a)\tan^{-1}(b/a) 只在 a>0a>0 时给出正确象限,一般应写成 atan2⁡(b,a)\operatorname{atan2}(b,a)(见 Wikipedia "Argument (complex analysis)")。

  • 复数乘法:∣c1c2∣=∣c1∣∣c2∣|c_1c_2|=|c_1||c_2|,arg⁡(c1c2)=arg⁡c1+arg⁡c2\arg(c_1c_2)=\arg c_1+\arg c_2(式 15.12),所以单位复数相乘是纯旋转,乘以 jj 就是转 90°。GEA 指出这正是单位四元数能表示三维旋转的原因:四元数相当于一个实部、三个虚部的"四维复数"。

    注:这个类比只能算直觉。四元数乘法不满足交换律,旋转三维向量用的是夹乘 q v q−1q\,v\,q^{-1}(qq 里存的是半角),并不是像复数那样乘一次(见 Wikipedia "Quaternions and spatial rotation")。

  • 欧拉公式(式 15.13):ejω0t=cos⁡ω0t+jsin⁡ω0te^{j\omega_0t}=\cos\omega_0t+j\sin\omega_0t,实部是余弦、虚部是正弦。

傅里叶级数与傅里叶变换

周期信号可以写成谐波相关的复指数之和,即傅里叶级数(式 15.14):x(t)=∑kakejkω0tx(t)=\sum_k a_ke^{jk\omega_0t},ω0\omega_0 是基频。满足狄利克雷条件的非周期信号也能表示为正弦的线性组合,系数变成连续函数 X(ω)X(\omega),即傅里叶变换(式 15.15、15.16)(卷 II 15.2.5.3–15.2.5.4):

X(ω)=∫−∞+∞x(t)e−jωtdt,x(t)=12π∫−∞+∞X(ω)ejωtdωX(\omega)=\int_{-\infty}^{+\infty}x(t)e^{-j\omega t}dt,\qquad x(t)=\frac{1}{2\pi}\int_{-\infty}^{+\infty}X(\omega)e^{j\omega t}d\omega

x(t)x(t) 是时域表示,X(ω)X(\omega) 是频域表示。X(ω)X(\omega) 一般是复数,常用伯德图 (Bode Plot) 分别画模和辐角(卷 II 15.2.5.5)。离散时间下有一族快速算法,称为快速傅里叶变换 (FFT)(卷 II 15.2.5.6)。

卷积定理与对偶性

时域卷积等于频域乘法,反之亦然(卷 II 15.2.5.7):

y(t)=x(t)∗h(t)  ⟺  Y(ω)=X(ω)H(ω)y(t)=x(t)*h(t)\iff Y(\omega)=X(\omega)H(\omega)

H(ω)H(\omega) 称为系统的频率响应。有时用冲激响应在时域卷积更方便,有时用频率响应在频域相乘更方便。GEA 说 LTI 系统还有对偶性:时间和频率的角色可以互换,例如两个信号相乘(调制)在频域就是两者频谱的卷积。

原书问题:对偶性是傅里叶变换的性质(时域与频域的公式几乎对称),不是 LTI 系统的性质。调制(两信号相乘)本身也不是 LTI 运算,它是时变的(见 Oppenheim & Willsky《Signals and Systems》第 2 版 4.3.6 节 "Duality",即 GEA 引用的 [45])。

滤波

滤波器是衰减选定频率范围、保留其余频率的 LTI 系统(卷 II 15.2.5.8):

类型保留衰减
低通 (low-pass)低频高频
高通 (high-pass)高频低频
带通 (band-pass)通带内两端
陷波 (notch)两端阻带内

理想滤波器的 H(ω)H(\omega) 是矩形:通带为 1、阻带为 0。实际滤波器(如 RC 低通)在通带和阻带之间逐渐过渡,适合"想要"和"不想要"的频率没有清晰分界的场合。均衡器 (EQ) 就是一组调到不同频段、串联作用于信号的滤波器。滤波还可以去除与有用信号频谱不重叠的噪声。

在游戏中的应用

  • 房间声学可以建模为 LTI 系统:湿声 = 干声 * 房间冲激响应,即卷积混响,见 三维音频渲染。
  • 采样定理、走样和重建滤波是频域视角的直接应用,见 数字音频技术;图形学中的同一理论见 抗锯齿 和 图像处理与后处理。
  • 大气吸收、遮挡造成的发闷都用低通滤波器模拟。

PBRT 的视角:渲染中的傅里叶约定与功率谱(PBRT 4e 8.1–8.2)

PBRT 用普通频率 ω\omega(单位:周期每单位长度),指数里带 2π2\pi: F(ω)=∫f(x)e−i2πωxdx,f(x)=∫F(ω)ei2πωxdωF(\omega)=\int f(x)e^{-i2\pi\omega x}dx,\qquad f(x)=\int F(\omega)e^{i2\pi\omega x}d\omega 上文 GEA 用的是角频率约定,X(ω)=∫x(t)e−jωtdtX(\omega)=\int x(t)e^{-j\omega t}dt,逆变换前有 1/(2π)1/(2\pi)。两者只差变量替换 ω角=2πω\omega_{\text{角}}=2\pi\omega,读公式时要先确认约定。PBRT 的约定下 e−πx2e^{-\pi x^2} 是自身的傅里叶变换,盒函数的变换就是 sinc⁡(ω)=sin⁡(πω)/(πω)\operatorname{sinc}(\omega)=\sin(\pi\omega)/(\pi\omega),没有多余常数。

空域频域(PBRT 表 8.1)
盒函数(宽 1)sinc⁡(ω)\operatorname{sinc}(\omega)
高斯 e−πx2e^{-\pi x^2}e−πω2e^{-\pi\omega^2}
常数 1δ(ω)\delta(\omega)
cos⁡x\cos xπ(δ(1−2πω)+δ(1+2πω))=12[δ(ω−12π)+δ(ω+12π)]\pi(\delta(1-2\pi\omega)+\delta(1+2\pi\omega))=\tfrac12[\delta(\omega-\tfrac1{2\pi})+\delta(\omega+\tfrac1{2\pi})](自行化简验证)
冲激串,周期 TT冲激串,周期 1/T1/T

渲染还用两个上文没有的工具:

  • 功率谱密度 Pf=FF‾\mathcal P_f=F\overline F:丢掉相位。PBRT 8.1.6 说乘积的 PSD 等于 PSD 的卷积,这一点作为确定性恒等式并不成立(反例见 抗锯齿 的原书问题);对随机采样模式取期望时才可以这样用。用来分析随机采样模式(白噪声、蓝噪声、抖动),见 抗锯齿。
  • 有限域上的傅里叶级数:分析 [0,1)n[0,1)^n 上的蒙特卡洛积分时用级数而不用变换,避免把函数在域外补零造成的不连续,见 蒙特卡洛积分与重要性采样。

PBRT 表 8.1 冲激串一行差一个常数因子 TT(推导和验证见 抗锯齿 的 PBRT 小节)。

  1. Game_Engine_Architecture_4th_Edtion_Volume_2_-_Jason_Gregory.pdf
  2. Jason Gregory《Game Engine Architecture》第 4 版(2026)卷 II 第 15 章 15.2 节
  3. PBRT 4e source excerpt: chapter 08 (Sampling and Reconstruction)
  4. Pharr, Jakob, Humphreys《Physically Based Rendering: From Theory to Implementation》第 4 版(MIT Press, 2023)第 8 章 8.1.1、8.1.6、8.2.1 节,pbr-book.org/4ed/Sampling_and_Reconstruction

相关页面

游戏开发声音的物理与感知Physics & Perception of Sound声音是在空气等可压缩介质中传播的压缩波,用声压随时间变化的信号 p(t) 描述。游戏音频要模拟的物理与感知现象包括:用分贝度量的响度、人耳对频率不均匀的灵敏度、随距离和大气吸收的衰减、干涉、早期反射与晚期混响、多普勒频移,以及人耳判断声源方位的线索(ITD、IID、HRTF)。GEA 把它们作为 3D 音频渲染的理论基础(GEA4 卷 II 15.1)。游戏开发数字音频技术Digital Audio Technology游戏音频程序员需要了解从麦克风到扬声器的整条硬件链路:模拟端的换能器、扬声器布局、电平、放大器和音量控制;数字端的脉冲编码调制 (PCM) 采样、香农-奈奎斯特采样定理、位深与量化误差、各种音频格式与编解码器、多声道数据的并行与交错布局,以及数字接口。GEA 用它们说明音频引擎的输入输出到底是什么(GEA4 卷 II 15.3)。游戏开发三维音频渲染3D Audio Rendering3D 音频渲染引擎要尽可能可信地重现"玩家若真在游戏世界里会听到什么"。它的输入是世界里大量的 3D 声音,输出是少数几路扬声器声道;主要任务是合成、空间化(距离衰减 + 声像定位)、声学建模(混响、遮挡、衍射)、多普勒和混音。GEA 给出了恒功率声像律、聚焦角、混响区域交叉混合、遮挡/阻挡/排除的分析方法,以及顽皮狗《最后生还者》的随机传播建模和声音门户(GEA4 卷 II 15.4)。图形学抗锯齿Antialiasing渲染本质上是采样,采样频率不足就会混叠(锯齿、闪烁的"萤火虫"、车轮倒转)。屏幕空间抗锯齿在每个像素取多个样本并加权求和:超采样最直接但最贵,MSAA 每像素只着色一次,时间抗锯齿 (TAA) 把样本分散到多帧,形态学方法 (FXAA/SMAA) 作为后处理重建边缘。没有一种方法在所有方面最好。图形学图像处理与后处理Image Processing & Post-Processing后处理是在渲染出图像后再用 GPU 对其做图像处理:把离屏缓冲当纹理,用全屏 pass 让像素着色器(或计算着色器)对每个像素采样邻域并加权求和。核心技巧包括可分离滤波、利用双线性插值减少采样、降采样、以及借助深度/法线保持边缘的(联合)双边滤波(RTR4 12.1 节)。游戏数学四元数Quaternion单位四元数可以紧凑地表示任意三维旋转,与轴-角表示互相转换很简单,并能做稳定、匀速的朝向插值(slerp),这些都是欧拉角做不好的。它可以高效地转换为矩阵以便与其他变换合并。游戏策划反馈回路Feedback Loops反馈回路 (Feedback Loop):系统某部分变化的效果在稍后回过头来影响同一部分。负反馈 (Negative Feedback) 抑制变化、产生均衡;正反馈 (Positive Feedback) 放大变化、制造军备竞赛或下行螺旋。Adams & Dormans 把反馈回路视为涌现的三大结构特征之一(第 3 章)、经济形状的主要成因(第 4 章),并在第 6 章给出反馈的七种属性与篮球、《大富翁》等案例分析。游戏策划经济建造游戏设计Designing Economy-Building Games大多数游戏的内部经济结构固定不变(如《大富翁》),而经济建造游戏 (Economy-Building Games) 让玩家亲手添加源、泄与连接,自己搭出经济结构——典型的是建造与管理模拟及策略游戏(《文明》《模拟城市》、程度较轻的《星际争霸》)。因为每局玩家接线不同,不可能画出"一张大图",Adams & Dormans 改为两个层次建模:主导经济结构 (Dominant Economic Structure)(抽象层,玩家的经济会趋向的模板)与构建块 (Building Blocks)(具体建筑的机制,带可多方式连接的输入输出)。第 9 章用《凯撒大帝 III》做分析,再从零设计桌面原型 L图形学蒙特卡洛积分与重要性采样Monte Carlo Integration & Importance Sampling渲染方程里的半球积分没有闭式解,只能数值积分。蒙特卡洛积分在定义域里随机取样、按概率密度加权求平均,期望值正好等于积分真值,误差随样本数 N 按 1/\sqrt{N} 下降,而且与积分维数无关,所以成了光线追踪类渲染的数学基础。降低误差的主要手段是让采样分布接近被积函数的形状,也就是重要性采样(GEA4 卷 II 12.6.2、12.6.4)。

输入关键词开始搜索

滚轮或双指缩放 · 拖动平移 · 双击放大 / 还原