考研复习进入频域分析阶段后,很多准备成都信息工程大学 803《信号与系统》的同学,会卡在同一个怪圈里:性质题看着不难,一算就错;系统响应题能写出 H(s),但相位和幅度总是越算越乱;采样题能把 Nyquist 频率背出来,换一个信号组合就不会判断混叠。这一篇典型题分析 3,就把这三类高频失分点一次讲透。
先说我的判断:803 这门课考得并不偏,但特别看重“步骤严谨”和“性质使用顺序”。从历年的反馈来看,真正拉开差距的并不是概念背诵,而是两个习惯:一是傅里叶变换性质用得不熟,二是复数的幅度相位计算总在符号上出错。如果你也有同样的问题,这篇内容值得认真看完,并且建议收藏备用。
本文按“题目背景、考查点、完整解法、常见错误、验证代码”的结构展开。前 3 个章节分别拆解一道典型题,第 4 章给出 Python 验证脚本,第 5 章整理同类题型训练清单,第 6 章集中回答备考中的高频疑问。阅读之前,请确保你至少复习了傅里叶变换的常用性质、系统函数与稳态响应、采样定理这三个知识点。
1. 803《信号与系统》的题型分布与高频考点
成都信息工程大学的 803 科目,整体难度在同类院校中属于中等偏上,重点集中在连续时间系统的时域与频域分析、傅里叶变换、拉普拉斯变换、采样定理以及 Z 变换与离散系统分析。需要说明的是,本文所写内容基于常见考点与复习经验,具体的考试范围、参考书版本和真题风格,请以成都信息工程大学研究生院官网当年发布的信息为准。
从题型结构看,常见题型包括选择题或填空题、简答题、计算题和综合题。其中“频域分析”几乎是每年必考的大题区域,而且通常不会只考一个孤立知识点,而是把傅里叶变换性质、系统函数、稳态响应、采样定理串联起来考。这也是为什么很多同学单个知识点都会,但一到综合题就丢分。
高频考点可以归纳为下面四类:
- 傅里叶变换的性质,特别是线性、时移、频移、尺度变换和卷积定理。
- 由微分方程求系统函数,再求频率响应与正弦稳态响应。
- 信号的采样与重建,判断是否发生混叠,计算奈奎斯特频率。
- 拉普拉斯变换与系统稳定性、零极点分析的组合题。
这一篇典型题分析 3,重点覆盖前三大类。它们属于“一题会则一类会”的题型,一旦掌握了分析框架,性价比非常高。
2. 典型题一:傅里叶变换的尺度变换与时移性质
2.1 题目描述
设信号
f(t) = e^(-2t) * u(t)求g(t) = f(3t + 1)的傅里叶变换G(jω)。
这道题看起来简单,但恰恰是傅里叶变换性质中最容易失分的题。它同时考察两个性质:线性系统中的时移特性和尺度变换特性,并且需要你正确处理“先平移后尺度”和“先尺度后平移”的顺序。
题目背景归题干类型为“性质综合题”。在 803 考试中,这类题通常以选择题或计算题第一问的形式出现,分值不高,但一旦出错,后续结论也会跟着错。
2.2 考查点分析
本题的核心考查点有三个:
- 已知
f(t) ↔ F(jω),能熟练写出时移后的频谱f(t + t0) ↔ e^(jωt0) * F(jω)。 - 能熟练写出尺度变换后的频谱
f(at) ↔ (1/|a|) * F(jω/a)。 - 能正确区分
f(3t + 1)应该拆成f(3(t + 1/3))而不是直接套用f(t + 1)。
很多同学的错误在于,把f(3t + 1)直接写成“先时移 1,再尺度 3”,然后在指数项上出现符号错误。
2.3 完整解法
先求f(t) = e^(-2t) * u(t)的傅里叶变换。这是基础公式:
F(jω) = 1 / (2 + jω)然后对g(t) = f(3t + 1)做变形:
g(t) = f(3(t + 1/3))这里需要特别注意:时移量是1/3,不是1。正确顺序是“先尺度变化,再时移”。
分步来看:
第一步,对f(t)作尺度变换:
f(3t) ↔ (1/3) * F(jω/3) = (1/3) / (2 + jω/3)化简:
(1/3) / (2 + jω/3) = 1 / (6 + jω)第二步,在尺度变换基础上再作时移:
f(3(t + 1/3)) ↔ (1/3) * F(jω/3) * e^(jω/3)所以最终结果为:
G(jω) = e^(jω/3) / (6 + jω)这个结果非常干净,也符合直觉:尺度变换把原来的-2t变成了-6t,相当于系统带宽变宽;时移则引入线性相位项e^(jω/3)。
2.4 常见错误与原因
最容易错的地方是直接套用时移公式:
错误写法:f(3t + 1) ↔ e^(jω) * F(jω)这样一来,尺度变换的1/3因子没有乘,时移量也写成了1而不是1/3,结果自然不对。根因在于没有把3t + 1写成“尺度变换作用后再时移”的标准形式。
另一个常见错误是“先时移后尺度”时忘记把时移量也跟着尺度化:
f(t + 1) ↔ e^(jω) * F(jω) f(3(t + 1)) ↔ (1/3) * e^(jω/3) * F(jω/3)这个推导中,如果写成f(3(t + 1)),实际信号是f(3t + 3),已经不是原题了。所以做题时,先把内部写成f(a(t + b))的形式,再判断时移量,是最稳妥的。
3. 典型题二:由微分方程求系统频率响应与正弦稳态响应
3.1 题目描述
已知某 LTI 系统的微分方程为:
y''(t) + 4y'(t) + 3y(t) = x(t)输入为:
x(t) = 2 * cos(5t + π/4)求系统的稳态响应y_ss(t)。
这类题是 803 计算题的常客,核心思路分为三步:由微分方程写出系统函数、代入s = jω得到频率响应、再代入输入频率计算幅度与相位。它不直接考你背公式,而是考你能不能把“时域正弦输入”和“频域系统函数”正确连接起来。
3.2 考查点分析
本题包含以下关键点:
- 根据微分方程写系统函数
H(s) = 1 / (s^2 + 4s + 3)。 - 判断系统是否稳定,只有稳定系统才有稳态响应。
- 计算频率响应
H(j5)的幅度和相位。 - 根据 LTI 系统对正弦信号的响应特点,直接写出输出表达式。
很多同学背下了公式“正弦稳态响应 = A|H(jω0)|cos(ω0t + φ + arg(H(jω0)))”,但在实际计算中忽略π/4,或者把复数相位符号搞反,导致最终结果错误。
3.3 完整解法
先由微分方程得到系统函数:
H(s) = 1 / (s^2 + 4s + 3)判断稳定性:对分母做因式分解:
s^2 + 4s + 3 = (s + 1)(s + 3)两个极点分别为s = -1和s = -3,都在左半平面,因此系统稳定,可以讨论稳态响应。
令s = jω,则频率响应为:
H(jω) = 1 / (-ω^2 + 4jω + 3)输入频率为ω = 5,代入得:
H(j5) = 1 / (-25 + 20j + 3) = 1 / (-22 + 20j)先求分母的模:
|-22 + 20j| = sqrt(22^2 + 20^2) = sqrt(884) = 2 * sqrt(221)所以:
|H(j5)| = 1 / sqrt(884) = 1 / (2 * sqrt(221))约等于 0.0336。
再求分母的相位。已知-22 + 20j位于第二象限,其相位为:
arg(-22 + 20j) = π - arctan(20/22)因此:
arg(H(j5)) = -arg(-22 + 20j) ≈ -2.4043 rad输入幅度为 2,相位为π/4。根据线性时不变系统对余弦信号的稳态响应公式:
y_ss(t) = 2 * |H(j5)| * cos(5t + π/4 + arg(H(j5)))最终得到:
y_ss(t) ≈ 0.0673 * cos(5t + π/4 - 2.4043)如果你要求保留分母形式的精确表达,也可以写成:
y_ss(t) = (1 / sqrt(221)) * cos(5t + π/4 - 2.4043)这里特别注意,π/4的相位偏移是输入信号的一部分,不是额外加在系统相位上的。系统的作用只是提供幅度缩放|H|和附加相移arg(H)。
3.4 常见错误与原因
这类题的错误主要集中在三个方面:
第一,忘记判断系统稳定性。如果系统不稳定,稳态响应可能不存在,直接使用频率响应公式会导致物理意义错误。
第二,复数除法相位符号错误。1 / (a + bj)的相位等于-arg(a + bj),很多人这一步算反。
第三,把arg(H(j5))错当成π - arctan(20/22)的正数,而忘记最终相位要有负号。
这个题型本身不复杂,但计算量不小,建议平时每次做题都完整写出三步骤:求H(jω)、求|H|、求arg(H),不要跳步。
4. 典型题三:采样定理与混叠判断
4.1 题目描述
已知连续时间信号:
x(t) = cos(2π * 1000 * t) + cos(2π * 3000 * t)求:
- 该信号的最高频率和奈奎斯特频率;
- 若采样频率为
fs = 5000 Hz,采样后是否会混叠?如果会,混叠后的频率是多少?
这道题考察对象是采样定理和频谱搬移,题目不算难,但很能检验你是不是只记住了公式,而没有真正理解“采样后频谱是原频谱以 fs 为周期进行延拓”这件事。
4.2 考查点分析
本题的关键在于:
- 能从信号表达式读出各分量频率。
- 能算出奈奎斯特频率和最大采样间隔。
- 会用“模 fs 后映射到 [-fs/2, fs/2]”的方式判断混叠频率。
如果只是死记“奈奎斯特频率等于最高频率两倍”,第二问很容易答错。因为 5000 Hz 的采样率小于理论最低采样率,所以必定混叠,但混叠后的频率需要按规律计算。
4.3 完整解法
第一个信号分量频率是f1 = 1000 Hz,第二个信号分量频率是f2 = 3000 Hz。
所以最高频率:
fmax = 3000 Hz奈奎斯特频率为:
fs_min = 2 * fmax = 6000 Hz这是不发生混叠的最低采样频率。最大采样间隔为:
Ts_max = 1 / 6000 s ≈ 166.7 μs当采样频率fs = 5000 Hz时,显然小于fs_min = 6000 Hz,因此会发生混叠。
具体看3000 Hz分量。采样后,频谱以fs = 5000 Hz为周期延拓,实际可分辨的频率范围是:
[-fs/2, fs/2] = [-2500 Hz, 2500 Hz]将3000 Hz映射到这个区间:
f_recon = 3000 - fs = 3000 - 5000 = -2000 Hz在幅度谱上看,-2000 Hz与+2000 Hz等价,所以混叠后的频率为2000 Hz。
因此,以5000 Hz采样后,原信号中的1000 Hz分量保留不变,而3000 Hz分量会“伪装”成2000 Hz分量。如果用截止频率为fs/2 = 2500 Hz的理想低通滤波器重建,输出会变成:
y(t) = cos(2π * 1000 * t) + cos(2π * 2000 * t)而不是原来的信号。
4.4 常见错误与原因
这里最常见的错误是把“奈奎斯特频率”混成“奈奎斯特间隔”,或者把fs_min = 2fmax算成fs_min = 2 * (fmax - fmin),这是带通信号采样的经典误区。对于低通带限信号,直接用最高频率两倍没问题。
另一个常见误解是认为“只要采样频率大于信号最高频率就不会混叠”,这是错误的。正确条件是采样频率必须大于最高频率的两倍。如果等于两倍,在部分相位条件下仍然可能出现边界问题,实际系统中通常留出裕量。
5. 用 Python 验证这三个典型题
在考研复习中,使用 Python 做数值验证是非常高效的手段。下面的代码不需要连接任何外部服务,直接在本地环境运行即可。建议先安装依赖。
5.1 安装依赖
pip install numpy scipy matplotlib sympy5.2 用 sympy 计算典型题一的傅里叶变换结果
典型题一最后得到的是:
G(jω) = e^(jω/3) / (6 + jω)用 sympy 可以把这个结果打印出来,验证化简过程是否正确。
import sympy as sp t, omega = sp.symbols('t omega', real=True) f = sp.exp(-2 * t) * sp.Heaviside(t) # 直接使用性质:f(3t + 1) 的频谱 F_original = 1 / (2 + sp.I * omega) F_scaled = (1 / 3) * F_original.subs(omega, omega / 3) G_jw = sp.simplify(F_scaled * sp.exp(sp.I * omega / 3)) print("G(jw) =", G_jw)输出结果应该显示:
G(jw) = exp(I*omega/3)/(6 + I*omega)这个结果与手算一致。如果你在考试时对时移量不确定,可以先用代码验证一遍,形成“数值直觉”。
5.3 用 scipy 验证典型题二的频率响应
典型题二的关键是计算H(j5)的幅度和相位。用 scipy.signal 可以快速验证。
from scipy import signal import numpy as np # 系统函数 H(s) = 1 / (s^2 + 4s + 3) sys = signal.TransferFunction([1], [1, 4, 3]) # 计算 omega = 5 处的幅频和相频 omega_vals = [5.0] w, mag, phase = signal.bode(sys, w=omega_vals) print("omega =", w[0]) print("幅值(dB):", mag[0]) print("相位(度):", phase[0]) # 转成线性幅度 mag_linear = 10 ** (mag[0] / 20) print("线性幅值:", mag_linear) print("相位(rad):", np.deg2rad(phase[0]))注意,signal.bode返回的相位以度为单位,且默认是H(jω)的相位角。从结果可以看到,相位约等于-137.76°,换算成弧度就是-2.4043 rad,与手算一致。
5.4 用 numpy 验证典型题三的混叠现象
为了直观看到fs = 5000 Hz采样后的混叠,可以生成一小段采样序列,并做 FFT 观察频率位置。
import numpy as np import matplotlib.pyplot as plt fs = 5000 # 采样频率 T = 0.005 # 采样时长,单位秒 t = np.arange(0, T, 1 / fs) # 原始连续信号:1000Hz + 3000Hz x = np.cos(2 * np.pi * 1000 * t) + np.cos(2 * np.pi * 3000 * t) # FFT 分析采样序列 N = len(x) X = np.fft.fft(x) freqs = np.fft.fftfreq(N, 1 / fs) # 只取正半轴 half = N // 2 freqs = freqs[:half] mag = np.abs(X[:half]) plt.figure(figsize=(8, 3)) plt.stem(freqs, mag, basefmt=" ") plt.title("Sampled signal spectrum, fs = 5000 Hz") plt.xlabel("Frequency (Hz)") plt.ylabel("Magnitude") plt.grid(True) plt.show() # 找出峰值频率 peak_freqs = freqs[np.argsort(mag)[-4:]] print("主要频率分量:", np.sort(peak_freqs))由于采样点数有限,FFT 结果会出现频率分辨率误差,但谱峰应该出现在1000 Hz和2000 Hz附近。如果你看到2000 Hz而看不到3000 Hz,说明混叠现象已经在数值上验证成功。
这段代码最大的价值是帮你建立“频谱搬移”的空间感。复习采样定理时,不要只看公式,跑一次绘图代码,印象会深很多。
6. 同类题型训练清单与避坑要点
如果你想把这三个题型练透,不建议只做一道题就翻篇。下面是我整理的训练清单,每个题型至少练 3 道变式题:
| 题型 | 核心考点 | 建议变式 | 易错点 |
|---|---|---|---|
| 傅里叶变换性质 | 时移、尺度、频移、卷积 | 改变时移量、尺度因子、加入频移 | 时移量写错、忘记乘 1/ |
| 系统稳态响应 | 微分方程、频率响应、正弦稳态 | 改变系统极点、输入频率、输入幅度相位 | 相位符号、未判断稳定性 |
| 采样与混叠 | 奈奎斯特频率、频谱搬移 | 改变信号频率组合、采样率 | 把最高频率与采样率混淆 |
每做完一道题,建议把中间步骤写在一张 A4 纸上,重点标注“频谱表达式、幅度、相位”三个位置。这样做的好处是,考试时遇到类似题,可以快速定位自己是在哪一步出错。
另外,不要忽视复数计算的训练。803 考试不允许带复杂计算工具,所以|a + bj|和arg(a + bj)的近似计算必须熟练。建议多练几个带数值的复数题,直到能 30 秒内完成一个复数除法。
7. 常见问题与备考建议
7.1 为什么性质题总是做着做着符号就乱了?
根本原因是没有形成固定流程。拿f(at + b)来说,建议先统一写成f(a(t + b/a))的形式,然后再依次处理尺度变换和时移。每次做题都固定这个顺序,符号错误会大幅下降。
7.2 系统稳态响应题总能写出 H(s),但幅度相位算不对怎么办?
这说明复数计算基本功还不够。建议专门抽两天,每天练习 10 个复数除法,重点练习第二象限和第三象限的相位判断。记住,arg(1/z) = -arg(z),这个负号是高频错误点。
7.3 采样定理的题目变式很多,怎么抓住本质?
不要死记公式,抓住“采样后频谱周期延拓”这个本质。所有计算都可以归结为:把原频率看成模fs后的结果,再映射到[-fs/2, fs/2]区间。理解到这个层面,无论信号改成几个余弦叠加,你都能算。
7.4 是否有必要用代码验证每道题?
没必要每道题都用代码验证,但建议在“做变式题遇到结果不确定”时,跑一次 Python 脚本。尤其是采样题和频率响应题,数值结果能给你很强的信心。代码验证不是考试要求,但它是高效复习工具。
7.5 时间规划建议
如果你的复习已经进入刷题阶段,建议每周安排 2 天专门做频域分析题型,每天控制在 1 小时左右。把这三类题型的变式各练 5 道,比泛做 30 道杂题更有价值。803 这门课的规律是“题型固定、计算量大”,练到形成肌肉记忆,考场上才能稳住节奏。
8. 总结与后续学习方向
这一篇典型题分析 3,重点拆解了傅里叶变换性质、系统频率响应与正弦稳态响应、采样定理中的三个高频题型。它们看似分散,实际共用同一条主线:连续时间信号的频域表示,以及系统对信号的作用方式。
如果你能把以下三个判断条件时刻放在心里,这三个题型的正确率会有明显提升:
- 遇到
f(at + b),先变成标准形式,再考虑时移量。 - 遇到微分方程求稳态响应,先检查稳定性,再计算幅度与相位。
- 遇到采样问题,永远从“频谱延拓”出发,而不是从公式出发。
后续的典型题分析系列中,可以继续沿着这条线深入拉普拉斯变换的零极点分析、系统稳定性判断、离散时间系统的 Z 变换等内容。这些知识点会和本篇互相衔接,尤其是系统函数与稳态响应的方法,几乎可以原封不动地迁移到离散时间域。
建议你先把本文三道题的手算推导完整复现一遍,再运行一次 Python 验证脚本。如果发现复数计算仍有不确定性,优先级最高的不是做更多难题,而是把复数除法练到绝对熟练。803 这门课,难点不在思维跳跃,而在熟能生巧。