
信号处理与系统是电子、通信、自动化等专业的核心基础但很多同学在学习时常常感觉概念抽象、时域频域转换难以理解面对线性时不变系统更是知其然不知其所以然。本文将以国防科技大学的经典课程体系为蓝本结合工程实践为你完整拆解从时域到频域的线性时不变信号处理核心体系。无论你是正在啃教材的学生还是需要重温理论基础的在职工程师都能通过本文的系统讲解和大量MATLAB/Python示例建立起清晰、直观的知识框架并掌握将理论应用于实际信号分析的能力。1. 信号与系统基础从概念到模型在深入时域频域之前我们必须夯实最基础的概念。信号与系统并非空中楼阁它们是对现实世界信息传递与处理的抽象。1.1 信号的定义与分类信号是携带信息的物理量函数通常表示为随时间、空间或其他自变量变化的函数。理解信号的分类是分析的第一步。连续时间信号与离散时间信号这是最根本的分类。连续时间信号在任意时间点都有定义例如现实世界中的声音、温度。离散时间信号仅在离散的时间点有定义通常由连续信号采样得到是数字处理的基础。周期信号与非周期信号周期信号经过一个固定的时间间隔周期后会重复自身如正弦波、方波。非周期信号则不会重复如单个脉冲。周期信号的分析是频域分析的基石。能量信号与功率信号这是一个重要的工程概念。能量有限的信号如单个脉冲称为能量信号功率有限的信号如周期信号、随机信号称为功率信号。这决定了我们后续使用能量谱还是功率谱进行分析。1.2 系统的定义与核心性质系统是对信号进行变换或处理的实体。我们关注的是其输入输出关系。线性时不变系统之所以重要是因为它具有一系列完美的数学性质使得分析变得可能。线性性包含叠加性和齐次性。即如果系统对输入x1(t)的响应是y1(t)对x2(t)的响应是y2(t)那么对于输入ax1(t) bx2(t)的响应必然是ay1(t) by2(t)。这意味着复杂信号可以分解为简单信号的组合来分析。时不变性系统的特性不随时间改变。如果输入x(t)产生输出y(t)那么输入x(t - τ)将产生输出y(t - τ)。即输入延迟多久输出就延迟多久系统本身的行为不变。因果性系统在任意时刻t0的输出只取决于t ≤ t0时刻的输入与未来输入无关。这是物理可实现的系统必须满足的条件。稳定性有界输入产生有界输出。这是系统能够正常工作的前提。一个同时满足线性和时不变性的系统就称为线性时不变系统。LTI系统是理论分析和工程设计的核心对象。2. 时域分析卷积与系统的直接描述时域分析是我们最直观的理解方式即直接观察信号和响应随时间的变化。对于LTI系统时域分析的核心工具是单位冲激响应和卷积。2.1 单位冲激响应系统的“指纹”单位冲激信号δ(t)离散情况为δ[n]是一个理想化的信号其幅度在t0时刻为无穷大持续时间为无穷小但面积为1。将它输入LTI系统得到的输出h(t)就称为该系统的单位冲激响应。为什么它如此重要因为h(t)完全表征了一个LTI系统的所有特性。知道了h(t)理论上就可以计算出该系统对任意输入信号的响应。这就像掌握了一个人的DNA就能推断其各种特征。2.2 卷积LTI系统响应的万能公式对于任意输入信号x(t)LTI系统的输出y(t)可以通过输入信号与系统单位冲激响应h(t)的卷积运算得到y(t) x(t) * h(t) ∫_{-∞}^{∞} x(τ) h(t-τ) dτ连续时间y[n] x[n] * h[n] Σ_{k-∞}^{∞} x[k] h[n-k]离散时间卷积的物理意义将输入信号x(t)分解为无数个不同时刻、不同强度的冲激信号的叠加。系统对每个冲激的响应就是h(t)的延时缩放版本。最终的输出y(t)就是所有这些延时缩放后的冲激响应的叠加。卷积运算完美地体现了LTI系统的线性性和时不变性。让我们通过一个Python示例来直观理解卷积import numpy as np import matplotlib.pyplot as plt # 定义输入信号一个简单的矩形脉冲和系统冲激响应一个指数衰减 t np.linspace(0, 10, 1000) x np.where((t 2) (t 4), 1.0, 0.0) # 从t2到t4的矩形脉冲 h np.exp(-1.5 * t) * (t 0) # 因果的指数衰减冲激响应 # 计算卷积 y np.convolve(x, h, modefull) * (t[1] - t[0]) # 乘dt近似积分 ty np.linspace(t[0] t[0], t[-1] t[-1], len(y)) # 卷积后的时间轴 # 绘图 fig, axes plt.subplots(3, 1, figsize(10, 8)) axes[0].plot(t, x, b-, linewidth2) axes[0].set_title(输入信号 x(t)) axes[0].set_xlabel(时间 t) axes[0].grid(True) axes[1].plot(t, h, r-, linewidth2) axes[1].set_title(系统冲激响应 h(t)) axes[1].set_xlabel(时间 t) axes[1].grid(True) axes[2].plot(ty, y, g-, linewidth2) axes[2].set_title(输出信号 y(t) x(t) * h(t)) axes[2].set_xlabel(时间 t) axes[2].grid(True) plt.tight_layout() plt.show()运行这段代码你可以清晰地看到一个矩形脉冲输入到一个具有“记忆性”指数衰减的系统中输出信号不再是规则的矩形而是被“平滑”和“拖尾”了。这就是卷积在时域上产生的效果——信号的形状被系统的冲激响应所“塑造”。3. 频域分析一傅里叶级数与周期信号时域卷积虽然精确但计算复杂且难以直观看出系统对信号不同成分的影响。频域分析将信号从“时间”视角切换到“频率”视角这是信号处理史上最伟大的思想之一。3.1 傅里叶级数周期信号的频域分解任何满足狄利克雷条件的周期信号都可以分解为一系列不同频率、幅度和相位的正弦或余弦信号之和。这就是傅里叶级数展开。 对于周期为T的周期信号x(t)其复数形式的傅里叶级数为x(t) Σ_{k-∞}^{∞} a_k e^{j k ω_0 t}其中ω_0 2π/T是基波角频率a_k是第k次谐波频率为kω_0的复数系数包含了该频率分量的幅度和相位信息。工程意义它将一个复杂的时域波形转化为一张清晰的“频谱菜单”列出了构成该信号的所有频率成分及其“分量”幅度和相位。|a_k|随k变化的图形称为幅度谱∠a_k随k变化的图形称为相位谱。3.2 典型周期信号的频谱通过分析典型信号的频谱可以建立直观感受。正弦/余弦信号其频谱是在其频率处的一根单一谱线狄拉克δ函数。这是最纯净的频率成分。方波信号其频谱包含基波和奇数次谐波谐波幅度以1/k的规律衰减。这说明方波包含丰富的高频成分。三角波信号其频谱也包含基波和奇数次谐波但幅度以1/k²的规律衰减高频成分比方波少得多因此看起来更“平滑”。使用MATLAB可以快速绘制周期信号的频谱% 分析一个周期方波信号的频谱 T 2*pi; % 周期 t -3*T:0.001:3*T; % 时间轴 x square(t); % 生成方波MATLAB内置函数 % 计算傅里叶级数系数前15次谐波 N 15; omega0 2*pi/T; a0 0; % 方波平均值为0 ak zeros(1, N); for k 1:N % 利用方波的对称性简化积分计算 if mod(k,2) 1 % 奇数次谐波 ak(k) 4/(pi*k); else ak(k) 0; % 偶数次谐波为0 end end % 重建信号 x_recon a0 * ones(size(t)); for k 1:N x_recon x_recon ak(k) * sin(k*omega0*t); end % 绘图 figure; subplot(2,1,1); plot(t, x, b, t, x_recon, r--, LineWidth, 1.5); legend(原始方波, 15次谐波重建); title(时域波形); xlabel(时间 t); ylabel(幅度); grid on; subplot(2,1,2); stem(1:N, ak, filled, LineWidth, 1.5); title(傅里叶级数系数幅度谱); xlabel(谐波次数 k); ylabel(系数幅度 a_k); grid on;运行后可以看到仅用前15次奇数次谐波叠加就已经能较好地逼近方波但边缘仍有振荡吉布斯现象。频谱图清晰地显示了能量集中在奇数次谐波上。4. 频域分析二傅里叶变换与非周期信号对于非周期信号可以将其视为周期无穷大的周期信号。当周期T→∞时傅里叶级数演变为傅里叶变换。4.1 连续时间傅里叶变换非周期信号x(t)的傅里叶变换定义为X(jω) ∫_{-∞}^{∞} x(t) e^{-jωt} dt其逆变换为x(t) (1/2π) ∫_{-∞}^{∞} X(jω) e^{jωt} dωX(jω)是一个复数函数称为信号的频谱密度函数简称频谱。与傅里叶级数的离散谱线不同X(jω)是连续谱表示的是单位频率上的信号“密度”。它揭示了信号能量或功率在连续频率轴上的分布情况。4.2 典型信号的傅里叶变换对掌握常用变换对至关重要。单边指数衰减信号e^{-at}u(t) (a0) - 1/(ajω)。其幅度谱随频率增加而衰减。矩形脉冲信号门函数rect(t/τ) - τ Sa(ωτ/2)。其中Sa(x)sin(x)/x是抽样函数。这是一个非常重要的变换对它表明时域有限的信号其频谱是无限扩展的反之亦然。冲激信号δ(t) - 1。冲激包含所有频率成分且幅度相等这使它成为理想的测试信号。常数信号1 - 2πδ(ω)。直流信号的能量全部集中在零频率处。4.3 傅里叶变换的核心性质这些性质是频域分析的工具箱。线性a x1(t) b x2(t) - a X1(jω) b X2(jω)。时移x(t - t0) - X(jω) e^{-jωt0}。时移只影响相位谱不影响幅度谱。频移x(t) e^{jω0t} - X(j(ω-ω0))。这是调制技术的基础。时域卷积x(t) * h(t) - X(jω) H(jω)。这是LTI系统频域分析的基石。时域相乘x(t) p(t) - (1/2π) X(jω) * P(jω)。这是采样和调制的理论基础。微分与积分dx(t)/dt - jω X(jω)∫x(τ)dτ - (1/jω) X(jω) πX(0)δ(ω)。卷积定理的工程价值时域中复杂的卷积运算在频域中变成了简单的乘法运算。即Y(jω) X(jω) H(jω)。这意味着要分析一个系统对信号的影响我们只需将信号的频谱X(jω)乘以系统的频率响应H(jω)即可得到输出信号的频谱Y(jω)再通过逆变换回时域。H(jω)就是系统冲激响应h(t)的傅里叶变换它直接告诉我们系统对不同频率正弦信号的放大或衰减倍数和相位移动。5. 离散时间信号与系统从连续到数字的桥梁现实世界的信号处理大多在数字域进行因此必须理解离散时间信号与系统。5.1 采样定理数字世界的入场券如何将连续信号x(t)变为离散信号x[n]答案是采样x[n] x(nT_s)T_s为采样间隔f_s 1/T_s为采样频率。 采样定理奈奎斯特定理指出要想从采样后的离散信号中无失真地恢复原始连续信号采样频率f_s必须大于信号最高频率f_max的两倍即f_s 2f_max。2f_max被称为奈奎斯特频率。 如果采样率不足就会发生混叠高频成分会“伪装”成低频成分造成无法挽回的信息丢失。在实际工程中采样前通常需要一个抗混叠滤波器来限制信号带宽。5.2 离散时间傅里叶变换离散时间信号x[n]的傅里叶变换定义为X(e^{jω}) Σ_{n-∞}^{∞} x[n] e^{-jωn}注意这里的频率变量ω是数字角频率单位是弧度/样本且X(e^{jω})是周期为2π的周期函数。这是由采样的本质决定的。5.3 离散傅里叶变换与快速傅里叶变换DTFT需要无限长序列不适用于计算机计算。对于有限长序列x[n] (n0,1,...,N-1)我们使用离散傅里叶变换X[k] Σ_{n0}^{N-1} x[n] e^{-j(2π/N)kn}, k0,1,...,N-1其逆变换为x[n] (1/N) Σ_{k0}^{N-1} X[k] e^{j(2π/N)kn}, n0,1,...,N-1DFT将时域的有限长序列变换为频域的有限长序列X[k]。X[k]实际上是对DTFT在一个周期内进行等间隔采样的结果。直接计算DFT的复杂度是O(N²)当N很大时计算量惊人。快速傅里叶变换是一种高效计算DFT的算法将复杂度降至O(N log N)。FFT不是一种新的变换而是DFT的一种快速算法。它是现代数字信号处理的引擎没有FFT许多实时处理将无法实现。import numpy as np import matplotlib.pyplot as plt # 生成一个包含两个频率成分的离散信号 fs 1000 # 采样频率 1000 Hz T 1.0 # 信号时长 1秒 N int(fs * T) # 采样点数 t np.linspace(0.0, T, N, endpointFalse) # 信号50Hz正弦波 120Hz正弦波 随机噪声 x 0.7 * np.sin(2 * np.pi * 50.0 * t) 1.0 * np.sin(2 * np.pi * 120.0 * t) x 0.5 * np.random.randn(N) # 加入高斯白噪声 # 计算FFT X np.fft.fft(x) freqs np.fft.fftfreq(N, 1/fs) # 计算对应的频率轴 # 取前半部分正频率 half_n N // 2 X_mag np.abs(X[:half_n]) * 2 / N # 求幅度谱并乘以2/N恢复真实幅度除直流分量 freqs_half freqs[:half_n] # 绘图 fig, axes plt.subplots(2, 1, figsize(10, 8)) axes[0].plot(t, x) axes[0].set_title(时域信号 (含50Hz, 120Hz及噪声)) axes[0].set_xlabel(时间 [秒]) axes[0].set_ylabel(幅度) axes[0].grid() axes[1].stem(freqs_half, X_mag, linefmtb-, markerfmt , basefmt ) axes[1].set_title(幅度频谱 (FFT)) axes[1].set_xlabel(频率 [Hz]) axes[1].set_ylabel(幅度) axes[1].set_xlim(0, 200) axes[1].grid() plt.tight_layout() plt.show()运行这段代码即使在强噪声干扰下FFT也能清晰地从时域波形中提取出50Hz和120Hz的频率成分。这展示了频域分析在特征提取和噪声抑制方面的强大能力。6. LTI系统的频域表征系统函数与滤波器设计在频域中LTI系统由系统函数频率响应H(jω)连续或H(e^{jω})离散来表征。6.1 频率响应的物理意义H(jω) |H(jω)| e^{j∠H(jω)}是一个复数。当频率为ω的正弦信号A sin(ωt)输入系统时输出是同频率的正弦信号A |H(jω)| sin(ωt ∠H(jω))。幅度响应|H(jω)|表示系统对该频率分量的放大1或衰减1倍数。相位响应∠H(jω)表示系统对该频率分量造成的相位移动。6.2 滤波器的分类与设计根据频率响应的不同LTI系统常被用作滤波器。低通滤波器允许低频通过抑制高频。用于去噪、平滑。高通滤波器允许高频通过抑制低频。用于边缘检测、增强细节。带通滤波器允许某一频带通过抑制两侧频率。用于提取特定频率信号如解调。带阻滤波器抑制某一频带允许两侧频率通过。用于消除特定干扰如工频干扰。滤波器设计方法多样经典模拟滤波器有巴特沃斯最平坦、切比雪夫等波纹、椭圆最陡峭等。数字滤波器设计则通常通过模拟滤波器映射或直接设计。6.3 零极点分析与系统稳定性对于因果LTI系统其系统函数通常可以表示为有理分式H(s) K * Π(s - z_i) / Π(s - p_j)连续s为复频率H(z) K * Π(1 - z_i z^{-1}) / Π(1 - p_j z^{-1})离散z为复变量零点z_i使分子为零H(s)0的点。通常导致频率响应在该频率附近出现谷点。极点p_j使分母为零H(s)→∞的点。通常导致频率响应在该频率附近出现峰点。稳定性判据连续系统所有极点必须位于s平面的左半平面实部为负。稳定性判据离散系统所有极点必须位于z平面的单位圆内模小于1。通过分析零极点在复平面的分布可以直观地判断系统的频率特性、稳定性和瞬态响应。7. 从理论到实践综合案例与工程考量理论学习最终要服务于实践。我们通过一个综合案例串联起从时域到频域的分析流程。7.1 案例音频信号滤波系统需求一段录音中含有说话声低频为主和尖锐的啸叫声特定高频。设计一个系统尽可能保留人声去除啸叫。分析步骤信号采集与采样使用麦克风录制设置合适的采样率f_s如44.1kHz。确保f_s大于音频最高频率的两倍。频谱分析对采集到的离散信号x[n]做FFT得到其频谱X[k]。观察频谱图找出啸叫声对应的尖锐谱峰所在的频率f_noise。滤波器设计与选择啸叫是窄带高频干扰适合使用陷波滤波器一种特殊的带阻滤波器或自适应滤波器。这里我们设计一个简单的二阶IIR陷波滤波器其零点在单位圆上e^{±jω0}ω02π f_noise/f_s以完全抑制该频率极点在相同角度但稍靠近原点的位置以保证滤波器稳定且具有窄的阻带。系统函数为H(z) (1 - 2cos(ω0)z^{-1} z^{-2}) / (1 - 2r cos(ω0)z^{-1} r^2 z^{-2})其中r是极点的模0r1越接近1阻带越窄。滤波实现在时域利用滤波器的差分方程进行递归计算。假设滤波器差分方程为y[n] b0*x[n] b1*x[n-1] b2*x[n-2] - a1*y[n-1] - a2*y[n-2]。其中系数[b0,b1,b2,a1,a2]由设计的H(z)确定。结果验证对比滤波前后的时域波形和频谱。时域上啸叫声应被抑制频域上对应频率的谱峰应显著降低。同时聆听滤波后的音频确认人声清晰度未受明显影响。7.2 工程实践中的关键问题混叠采样前务必使用抗混叠低通滤波器。频谱泄漏对有限长信号做FFT相当于对无限长信号加矩形窗会导致频谱扩散泄漏。解决方法包括使用更平滑的窗函数如汉宁窗、汉明窗或进行更长的采样。栅栏效应DFT得到的是离散频谱线可能看不到真实的谱峰。可以通过补零增加FFT点数使频谱线更密。有限字长效应在数字硬件如FPGA、DSP中系数量化、运算舍入会带来误差可能影响滤波器性能甚至稳定性。设计时需考虑定点数精度。实时性要求根据系统延迟和计算复杂度要求选择FIR有限长冲激响应或IIR无限长冲激响应滤波器结构。FIR总是稳定且可设计线性相位但阶数较高IIR阶数低效率高但需考虑稳定性。8. 常见问题与深入理解在学习过程中以下几个问题是高频困惑点。8.1 时域与频域究竟哪个更“真实”两者是同一物理现象的不同数学表述同等“真实”。时域描述信号幅度随时间的变化频域描述信号能量随频率的分布。就像描述一个人可以用“身高体重随时间变化曲线”时域也可以用“身高体重的概率分布统计图”频域。选择哪个视角取决于你要解决什么问题。分析信号随时间演变用时时域分析信号成分、系统频率选择性用频域。8.2 卷积定理为什么如此强大因为它将LTI系统分析中最复杂的运算卷积转换成了最简单的运算乘法。这不仅仅是计算上的简化更是概念上的升华。它让我们可以独立地分析信号和系统的频率特性然后简单组合得到结果。滤波器设计、通信系统分析、图像处理中的卷积核操作都深深依赖于这一定理。8.3 如何理解“时域有限频域无限”这是傅里叶变换的基本性质。一个在时域上持续时间有限的信号如一个脉冲其频谱必然覆盖无限的频率范围尽管高频分量可能很小。反之一个带宽有限的信号其时域波形必然是无限长的。这是一个根本性的权衡在通信中体现为带宽与传输速率的矛盾在采样中体现为时域截断带来的频谱泄漏。8.4 数字信号处理中采样频率是不是越高越好并非如此。更高的采样频率意味着优点更宽的信号处理带宽更弱的抗混叠滤波器要求更高的时间分辨率。缺点数据量巨大对存储、传输和实时处理能力要求呈线性增长对ADC模数转换器的性能和成本要求更高。 工程上需要在性能、成本和复杂度之间取得平衡通常选择略高于奈奎斯特频率的2.2到4倍。9. 知识体系总结与学习路径建议信号处理与系统的知识体系是层次分明、环环相扣的。核心脉络从信号与系统的分类和性质出发在时域通过冲激响应和卷积建立输入输出关系为了简化分析并洞察本质引入频域方法通过傅里叶级数/变换将信号分解并利用卷积定理将系统分析转化为乘法将理论应用于离散时间和数字系统理解采样、DFT/FFT最终利用系统函数/频率响应进行滤波器设计和系统综合。给学习者的建议重概念轻死记理解线性、时不变、卷积、频谱、采样等核心概念的物理和数学意义比背诵公式更重要。勤动手多仿真使用MATLAB、PythonNumPy/SciPy或任何你熟悉的工具将书上的公式和例子亲手实现一遍。可视化能极大加深理解。建立联系时刻思考时域操作在频域对应什么效果频域特性在时域如何体现。例如时域卷积对应频域相乘时域加窗对应频域卷积。问题驱动结合具体应用场景学习如音频处理、图像处理、通信系统、雷达信号处理等了解理论是如何解决实际工程问题的。循序渐进先掌握确定性信号处理再涉足随机信号处理先掌握经典滤波再了解现代自适应滤波、谱估计等高级主题。掌握从时域到频域这套完整的分析框架就如同获得了信号世界的“透视眼”和“手术刀”无论是分析现有系统还是设计新系统都将拥有清晰的思路和强大的工具。