ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

信号与系统第三章:傅里叶级数与傅里叶变换核心解析

信号与系统第三章:傅里叶级数与傅里叶变换核心解析 信号与系统第三章在很多教材里都处于一个关键转折点从时域进入频域。前面几章用微分方程、卷积和冲激响应分析系统到了这一章开始把信号看成不同频率正弦分量或复指数分量的叠加。不同学校使用的教材不一样第三章的具体内容也有差异有的从周期信号的傅里叶级数开始有的直接讲傅里叶变换还有的会加入采样定理但最终都会落到同一个目标用频率这个视角重新理解信号和系统。下面以连续时间傅里叶分析为主线覆盖傅里叶级数、傅里叶变换、典型频谱、性质、卷积定理、采样定理和系统频率响应。如果你刚学完前两章第三章还没有建立框架或者期末考试前需要快速过一遍常见题型可以按这个顺序读。读完应该能独立完成四类问题求周期信号的傅里叶级数系数用性质化简傅里叶变换判断采样后是否混叠计算正弦输入下线性时不变系统的稳态输出。1. 先建立主线为什么第三章都在讲“分解信号”1.1 不同教材第三章的差异以及本文采用的主线国内常用的信号与系统教材中第三章的位置并不完全一致。奥本海姆版把周期信号的傅里叶级数放在第三章郑君里版第三章直接进入傅里叶变换吴大正版第三章可能是离散系统的时域分析。这个差异容易让刚接触这门课的同学产生困惑为什么我同学学的第三章和我学的不一样。常见教材第三章常见主题与本文主线的关系奥本海姆《信号与系统》周期信号的傅里叶级数表示本文从级数开始顺序一致郑君里《信号与系统》傅里叶变换对应本文第 3 部分吴大正《信号与线性系统分析》离散系统的时域分析若你学校第三章是离散先确认考核范围无论教材怎么编排核心都要用到傅里叶分析。所以本文采用一条更通用的主线先讲周期信号如何分解为傅里叶级数再把周期趋于无穷大得到非周期信号的傅里叶变换接着用卷积定理和采样定理把信号分析连接到系统分析。这样可以覆盖绝大多数学校的考试范围即使你的第三章是离散系统时域分析后面学傅里叶变换时也可以沿用这个框架。1.2 从时域到频域信号分解思想时域分析关注的是信号随时间如何变化。例如方波在一个周期内先高电平后低电平阶跃信号从 0 跳到 1这些都是时域描述。频域分析换了一个角度把信号看成若干不同频率正弦信号的叠加。一个周期方波听上去是“开关信号”但把它展开后会发现它其实是一个基波正弦加上一系列奇次谐波构成的。低频分量决定波形的主体形状高频谐波决定跳变沿和细节。这个“拆开再看”的思路就是傅里叶分析。用数学语言描述周期信号可以展开成傅里叶级数级数每一项对应一个频率分量。非周期信号不能用级数求和要用傅里叶变换把离散谱变成连续谱。线性时不变系统对复指数输入的输出仍然是同频率的复指数只是幅度和相位发生改变。这三个结论构成了第三章的主线。后面的公式和题目都是围绕这三句话展开的。1.3 为什么偏偏选正弦和复指数作为基本单元很多初学者会问为什么不用方波、三角波或者随机噪声作为分解的基本单元而一定要用正弦或复指数。根本原因在系统分析。对于线性时不变系统如果输入是复指数信号x(t) e^{j ω0 t}经过冲激响应为 h(t) 的系统后输出为y(t) H(jω0) e^{j ω0 t}其中 H(jω0) 是系统频率响应在 ω0 处的值。这说明复指数信号经过线性时不变系统后频率没有改变改变的只有幅度和相位。这种“特征函数”性质让正弦和复指数成为天然的系统分析工具。如果选方波作为基本单元方波经过系统后会变成完全不同的波形分析会非常麻烦。再结合欧拉公式e^{jθ} cosθ j sinθ正弦信号可以写成复指数的组合复指数也可以拆成正弦。做题时可以根据题目条件在三角形式和指数形式之间切换。2. 周期信号用傅里叶级数系数公式和频谱含义2.1 三角形式傅里叶级数先会算 a0、an、bn一个周期为 T 的实信号 f(t)在满足狄利克雷条件时可以展开为三角形式傅里叶级数f(t) a0 Σ_{n1}^∞ [ a_n cos(nω0t) b_n sin(nω0t) ]其中基波角频率ω0 2π / T三个系数的计算公式a0 (1/T) ∫_T f(t) dt a_n (2/T) ∫_T f(t) cos(nω0t) dt b_n (2/T) ∫_T f(t) sin(nω0t) dt这里要注意几点a0 是直流分量等于信号在一个周期内的平均值。a_n 和 b_n 分别对应余弦分量和正弦分量的幅度。积分区间取任意一个完整周期即可通常选 [-T/2, T/2] 或 [0, T]选择原则是谁方便算就选谁。如果信号本身是偶函数b_n 为 0如果是奇函数a_n 和 a0 都为 0。考试里最常见的周期信号是矩形脉冲因为它可以分段积分不需要处理复杂的三角恒等式。比如周期 T4脉宽 τ2幅度 A1中心在原点则a0 Aτ/T 1/2 a_n (2Aτ/T) sinc(nτ/T)这里的 sinc 函数按 sin(πx)/(πx) 定义。算系数时先判断对称性再决定要算哪几项能省下大量时间。2.2 指数形式傅里叶级数和三角形式如何换算傅里叶级数还有一种更紧凑的写法叫指数形式f(t) Σ_{n-∞}^∞ F_n e^{j n ω0 t}系数F_n (1/T) ∫_T f(t) e^{-j n ω0 t} dt指数形式和三角形式不是两套独立体系它们可以互相换算。对于实信号F_0 a0 F_n (a_n - j b_n) / 2n 0 F_{-n} (a_n j b_n) / 2n 0如果信号是偶函数b_n0那么正负频率的系数是实数并且满足F_n F_{-n} a_n / 2很多同学在这里出错原因是忘记除以 2或者忘记指数级数里负频率项也存在。正频率和负频率合在一起才对应三角形式中的一个实余弦分量。从频谱图的角度看三角形式画出来是单边谱只有正频率指数形式画出来是双边谱正负频率对称。两者描述的是同一个信号考试写哪种形式取决于题目要求。2.3 典型周期信号的傅里叶级数与收敛速度考试不需要每一个周期信号都现场算积分很多典型信号的展开结果是直接背的。下面这张表是常见周期信号的级数规律。周期信号系数规律特点周期矩形脉冲系数按 sinc 包络衰减存在第一零点谐波出现包络起伏周期三角波系数按 1/n² 衰减波形光滑收敛快周期锯齿波系数按 1/n 衰减波形有跳变收敛较慢周期冲激串所有系数相等频谱仍是等幅冲激串收敛速度可以直接观察信号越光滑高频分量衰减越快信号存在跳变点高频分量衰减就慢并且会在跳变附近出现吉布斯现象。周期矩形脉冲的第一零点是高频考点。设周期为 T脉宽为 τ频谱包络的第一个零点出现在n T / τ也就是当 nτ/T 为整数时该次谐波系数为 0。这个零点决定了信号的有效带宽通常认为主要能量集中在第一个零点以内。2.4 帕塞瓦尔定理用系数算信号平均功率周期信号是功率信号它的平均功率可以通过傅里叶级数系数直接计算不需要重新对时域波形做积分。三角形式下的帕塞瓦尔定理P a0² (1/2) Σ_{n1}^∞ (a_n² b_n²)指数形式下更简洁P Σ_{n-∞}^∞ |F_n|²两种形式算出来的功率是一样的区别只在三角形式里多了一个 1/2 因子。这个 1/2 来自 cos² 和 sin² 在一个周期内的平均值为 1/2。做题时如果题目给了系数让你求平均功率优先用指数形式因为不需要关心正负频率配对直接对 |F_n|² 求和。如果题目给了波形可以先算系数再用帕塞瓦尔定理求功率这比直接对 f²(t) 积分更符合第三章的考试风格。3. 非周期信号用傅里叶变换公式、典型变换对和性质3.1 从傅里叶级数到傅里叶变换周期信号的傅里叶级数给出的是离散频谱只在 nω0 这些离散频率点上有值。如果周期 T 趋于无穷大信号不再周期频谱从离散变成连续级数求和变成积分就得到傅里叶变换。常用定义如下。正变换F(jω) ∫_{-∞}^∞ f(t) e^{-jωt} dt反变换f(t) (1/2π) ∫_{-∞}^∞ F(jω) e^{jωt} dω这里要注意两点正变换没有系数反变换有 1/(2π)。不同教材定义可能不同但最终物理结果一致。考试写公式时先看清教材使用哪种定义。傅里叶变换存在的一个充分条件是信号绝对可积也就是 ∫|f(t)|dt 有限。但实际做题经常遇到不满足该条件的信号比如直流信号、周期信号这时需要用冲激函数表示它们的频谱。周期信号也可以做傅里叶变换结果是一串冲激。例如cos(ω0t) ↔ π[δ(ω-ω0) δ(ωω0)]这说明周期信号的傅里叶级数和傅里叶变换是相通的级数系数是冲激的强度傅里叶变换是这些冲激的集合。3.2 考试高频变换对建议直接背傅里叶变换的性质可以让你少算很多积分但前提是典型变换对要背熟。列出信号与系统里最常用的一组。时域信号 f(t)傅里叶变换 F(jω)说明δ(t)1单位冲激12πδ(ω)直流e^{-at}u(t)a01/(ajω)单边指数rect(t/τ)τ Sa(ωτ/2)矩形脉冲Sa(x)sinx/xe^{jω0t}2πδ(ω-ω0)复指数cos(ω0t)π[δ(ω-ω0)δ(ωω0)]余弦sin(ω0t)jπ[δ(ωω0)-δ(ω-ω0)]正弦Σδ(t-kT)(2π/T)Σδ(ω-2πn/T)冲激串矩形脉冲的变换要特别注意变量单位。如果使用频率 f 而不是角频率 ω矩形脉冲的频谱可以写为F(f) Aτ sinc(fτ)其中 sinc(x)sin(πx)/(πx)。在 MATLAB 和 Python 的 numpy 中sinc 函数使用这个定义所以 f 的单位是 Hz 时直接代入即可。3.3 傅里叶变换性质速查表和典型用法性质是第三章拿分的关键。很多题目不要求直接积分而是给你一个已知变换对再通过性质求另一个信号的频谱。性质时域频域线性a f1(t)b f2(t)a F1(jω)b F2(jω)时移f(t-t0)e^{-jωt0}F(jω)频移e^{jω0t}f(t)F(j(ω-ω0))尺度f(at)(1/对偶F(t)2π f(-ω)时域微分f(t)jωF(jω)频域微分t f(t)j dF(jω)/dω卷积f1(t)*f2(t)F1(jω)F2(jω)乘积f1(t)f2(t)(1/2π)F1(jω)*F2(jω)这几条性质各有常见用途时移性质说明信号在时域平移不改变幅度谱只改变相位谱相位变化量是 -ωt0。尺度性质说明时域压缩对应频域扩展同时幅度变为原来的 1/|a|。这就是“时间越短带宽越宽”的数学来源。时域微分性质常用于求解分方程对应的系统频率响应把微分方程变成代数方程。频域微分性质可以用来求 t 乘以已知信号的频谱例如求 t e^{-at}u(t)。做性质题时最忌讳看到信号就从头积分。正确顺序是先观察信号能不能拆成已知变换对再判断需要用哪条性质最后写出结果。3.4 卷积定理时域卷积与频域相乘卷积定理是信号与系统里连接信号分析与系统分析最重要的桥梁。时域卷积对应频域相乘f1(t) * f2(t) ↔ F1(jω) F2(jω)频域卷积对应时域相乘f1(t) f2(t) ↔ (1/2π) F1(jω) * F2(jω)线性时不变系统的零状态响应是输入与冲激响应的卷积y(t) x(t) * h(t)所以频域里只需要做乘法Y(jω) X(jω) H(jω)这个关系让系统分析从卷积积分变成代数运算。求解 y(t) 时可以先算 Y(jω)再做傅里叶反变换如果 X(jω) 或 H(jω) 是简单信号也可以直接在频域观察输出包含哪些频率分量。频域卷积定理常用于调制和解调。信号与余弦相乘本质是把信号频谱平移到余弦频率附近这就是调制的数学原理。考试中如果出现信号相乘的频谱图优先用频域卷积定理。4. 采样定理和系统频率响应把傅里叶分析用到信号传输上4.1 采样过程的频谱变化采样是把连续时间信号变成离散时间序列的过程在数字信号处理中无处不在。理想采样可以建模为原信号乘以周期冲激串f_s(t) f(t) Σ_{k-∞}^∞ δ(t-kT)其中 T 是采样周期采样频率fs 1/T根据频域卷积定理时域相乘对应频域卷积所以采样后信号的频谱为F_s(jω) (1/T) Σ_{n-∞}^∞ F(j(ω - nωs))其中ωs 2π / T 2π fs从这个公式可以看出采样不改变原信号频谱的形状而是在频率轴上每隔 ωs 复制一份幅度变为原来的 1/T。这个“频谱搬移”就是采样过程的核心。4.2 采样定理、混叠和信号恢复如果原信号是带限信号最高频率为 fm那么只要采样频率满足fs ≥ 2fm频谱副本之间就不会重叠可以通过理想低通滤波器把其中一个副本滤出来恢复原信号。这就是奈奎斯特采样定理。如果 fs 2fm频谱副本会发生重叠这部分重叠无法通过滤波消除恢复出来的信号与原始信号不同这种现象叫混叠。考试中判断混叠的步骤确定信号最高频率 fm单位是 Hz。计算采样频率 fs 1/T。比较 fs 与 2fm。如果混叠最低混叠频率通常可以按 fs 周期折叠计算。注意单位陷阱。题目给的最高频率如果是角频率 ωm要先换算成 Hzfm ωm / (2π)再决定采样频率。很多同学在这里直接把 ωm 代入 fs≥2ωm导致结果差 2π 倍。采样定理还有一个容易被忽略的点fs2fm 是理想情况下无失真恢复的临界条件。实际系统需要使用大于 2fm 的采样率并且配合抗混叠滤波器因为理想低通滤波器无法真正实现。4.3 系统频率响应 H(jω) 与正弦稳态响应系统频率响应定义为输出傅里叶变换与输入傅里叶变换之比H(jω) Y(jω) / X(jω)如果系统稳定频率响应还可以由冲激响应的傅里叶变换得到H(jω) ∫_{-∞}^∞ h(t) e^{-jωt} dt频率响应是复数可以写成H(jω) |H(jω)| e^{j∠H(jω)}|H(jω)| 是幅频特性∠H(jω) 是相频特性。计算正弦稳态响应时不需要做卷积。输入x(t) cos(ω0t φ)输出直接写为y(t) |H(jω0)| cos(ω0t φ ∠H(jω0))这个公式看起来简单但符号经常出错。容易忽略的是频率要带入 ω0而不是任意频率。输出幅度是输入的幅度乘以 |H(jω0)|。输出相位是输入相位加上 ∠H(jω0)不是减去。如果输入是 sin同理但要注意 sin 和 cos 的相位差 π/2。只要系统是线性时不变的正弦输入经过系统后频率不变只改变幅度和相位。这也是前面反复强调复指数特征函数性质的直接应用。4.4 无失真传输和理想滤波器为什么不能直接实现无失真传输要求系统输出在形状上与输入保持一致只是允许幅度缩放和时间延迟y(t) K x(t - t0)在频域对应H(jω) K e^{-jωt0}也就是说无失真传输系统的幅频特性应该是常数相频特性应该是过原点的直线。任何偏离都会造成失真幅频特性不是常数不同频率分量衰减不同产生幅度失真。相频特性不是线性不同频率分量产生不同延迟产生相位失真。理想低通滤波器的幅频特性是矩形窗看起来很简单但它的冲激响应是 sinc 函数在时间轴上从负无穷延伸到正无穷因此是非因果的物理上无法实现。实际工程中只能设计逼近理想特性的滤波器比如巴特沃斯、切比雪夫等。面试里经常问这个问题回答时抓住两个关键点理想滤波器非因果所以不可实现实际滤波器是让通带和阻带有一个过渡带而不是突变。5. 用 Python 把公式变成图像验证级数、频谱和混叠这一部分不是让你考试时用 Python而是用图像建立直觉。很多同学公式背得很熟但对“频谱长什么样”“混叠是什么感觉”没有概念。通过几个简单脚本可以把前面几节的内容可视化。5.1 先准备 Python 绘图环境需要安装 numpy 和 matplotlib。在命令行执行pip install numpy matplotlib示例脚本只使用这两个库。如果使用 Jupyter Notebook需要加上以下魔法命令让图像内联显示%matplotlib inline下面每个示例都可以独立运行。5.2 周期矩形脉冲的傅里叶级数逼近这段代码生成一个周期为 4、脉宽为 2、幅度为 1 的矩形脉冲并用前 20 次谐波近似还原它。import numpy as np import matplotlib.pyplot as plt T 4.0 tau 2.0 A 1.0 N 20 w0 2 * np.pi / T t np.linspace(-T, T, 4000, endpointFalse) def period_pulse(t, T, tau, A): t_mod (t T / 2) % T - T / 2 return np.where(np.abs(t_mod) tau / 2, A, 0.0) def fs_approx(t, T, tau, A, N): a0 A * tau / T y np.full_like(t, a0, dtypefloat) for n in range(1, N 1): an 2 * A * tau / T * np.sinc(n * tau / T) y an * np.cos(n * w0 * t) return y plt.figure(figsize(8, 4)) plt.plot(t, period_pulse(t, T, tau, A), k--, label原始矩形脉冲) plt.plot(t, fs_approx(t, T, tau, A), r, labelfN{N} 部分和) plt.xlabel(t) plt.ylabel(f(t)) plt.legend() plt.grid(True) plt.show()运行结果中红色曲线在跳变处会出现振荡这就是吉布斯现象。增加 N 可以减少振荡宽度但跳变处的过冲量不会消失大约保持原跳变幅度的 9% 左右。这个现象在考试里也经常被问到。注意 numpy.sinc 使用的定义是 sin(πx)/(πx)所以 a_n 公式里的 nτ/T 直接作为自变量不需要再乘 π。5.3 非周期矩形脉冲的频谱和第一零点矩形脉冲的傅里叶变换是 sinc 函数。画频谱时使用频率 f 作为横轴更直观。def rect_spectrum(f, tau, A1.0): return A * tau * np.sinc(f * tau) f_axis np.linspace(-3, 3, 800) tau_value 2.0 F_spectrum rect_spectrum(f_axis, tau_value) plt.figure(figsize(8, 4)) plt.plot(f_axis, F_spectrum) plt.axvline(1 / tau_value, colorr, ls--, label第一零点 f1/τ) plt.axvline(-1 / tau_value, colorr, ls--) plt.xlabel(f (Hz)) plt.ylabel(F(f)) plt.title(矩形脉冲频谱) plt.legend() plt.grid(True) plt.show()输出结果能清楚看到主瓣和旁瓣主瓣宽度为 2/τ第一零点出现在 f1/τ。脉宽越窄主瓣越宽这就是“时域越短频域越宽”的直观表现。5.4 用高频正弦采样演示混叠现象选择频率为 10 Hz 的信号采样频率为 12 Hz。由于 10 Hz 大于 6 Hz会发生混叠采样重建后会看到一个 2 Hz 的低频信号。fs 12.0 f0 10.0 t_cont np.linspace(0, 1, 1000) t_sample np.arange(0, 1, 1 / fs) x_cont np.cos(2 * np.pi * f0 * t_cont) x_sample np.cos(2 * np.pi * f0 * t_sample) plt.figure(figsize(8, 4)) plt.plot(t_cont, x_cont, alpha0.5, label原始 10Hz 信号) plt.stem(t_sample, x_sample, linefmtr, markerfmtro, basefmtk, label采样点) plt.plot(t_sample, np.cos(2 * np.pi * 2 * t_sample), g--, label混叠后的 2Hz 信号) plt.xlabel(t (s)) plt.ylabel(x(t)) plt.legend() plt.grid(True) plt.show()运行后可以看到采样点恰好落在 2 Hz 信号的波峰和波谷上说明 10 Hz 的信号在 12 Hz 采样率下被伪装成了 2 Hz。这个例子也说明采样率不足时高频信息会混入低频且无法通过后处理恢复。5.5 用频率响应计算正弦稳态输出假设系统频率响应为H(jω) 1 / (1 jω)输入为 cos(2t)可以直接计算稳态输出。w0 2.0 H 1 / (1 1j * w0) mag abs(H) phase np.angle(H) t np.linspace(0, 8, 2000) x_in np.cos(w0 * t) y_out mag * np.cos(w0 * t phase) plt.figure(figsize(8, 4)) plt.plot(t, x_in, label输入 cos(2t)) plt.plot(t, y_out, label稳态输出) plt.xlabel(t) plt.ylabel(幅度) plt.legend() plt.grid(True) plt.show()输出波形仍然是 2 rad/s 的余弦只是幅度变为 mag相位向左偏移了 phase。这正是正弦稳态分析的意义不需要做卷积只需求系统在单一频率点的响应。6. 从“听懂”到“90”四类高频题型的解题模板6.1 题型一
返回列表