首页 / 资讯中心 / 文章详情

余弦抽样后为何非周期?离散周期判据与冲激响应求解

余弦抽样后为何非周期?离散周期判据与冲激响应求解 ★ FEATURED ARTICLE
简介《信号与系统》课后答案PDF面向电子工程、通信工程等专业学生及考研复习者针对南京邮电大学信号与系统分析课程中的习题订正与概念梳理需求整理第一章信号与系统基本概念的配套解答。内容覆盖连续时间信号与离散时间序列的周期性判断、基本周期求解、两个周期信号相加仍为周期信号的条件证明以及连续信号均匀抽样、离散序列数字角频率、能量信号与功率信号判定等典型题型并给出较完整的推导过程与结论便于对照课堂进度查漏补缺、理解易混概念和复盘解题思路。资源包共1个PDF文件大小约1.12MB内容集中适合检索、打印和批注。目前已有3934人学习下载可作为课后巩固、考前复习与自测答案参考。1. 一个余弦抽完样就不周期了信号与系统里最容易被跳过的判据连续时间域里cos(2t) 是再标准不过的周期信号周期 π。把它按 1 秒的间隔均匀抽样得到离散序列 cos(2k)。这个序列却不是周期的——而且此时抽样间隔远小于奈奎斯特点所要求的临界值完全没有发生混叠。决定它周期性的不是「波形有没有重复」这个直观印象而是一个数字数字角频率 Ω₀ 2而 2π/Ω₀ π 是无理数。信号与系统这门课里大量看起来像「套公式」的判定题底层其实只有两类判据结构判据看表达式里的系数是不是整数比、系数是不是随 t 或 k 变动极限判据看能量、功率在无穷区间上收不收敛。搞清楚这两类判据各自管什么、为什么要这么设计第一章那一串「是/不是」就不再需要死记。2. 周期判据的分水岭连续看周期比离散看 2π/Ω 是不是有理数2.1 连续时间最小公倍数背后藏着一个整数约束单个余弦 A cos(ω₀t φ) 的周期是 T 2π/ω₀这一步没有争议。真正让人卡住的是两个余弦相加。设 f(t) cos(ω₁t) cos(ω₂t)各自周期 T₁ 2π/ω₁、T₂ 2π/ω₂。要让 f(t T) f(t) 对任意 t 成立第一个分量必须在 T 内平移整数个自己的周期第二个分量同理ω₁T 2πm, ω₂T 2πn, m, n 为正整数两式相除等价于 T₁/T₂ n/m也就是两个周期之比必须是有理数。写成最简分数 T₁/T₂ m/n 之后公共周期就是 T nT₁ mT₂——这个式子说明公共周期一定是两个分量周期的整数倍而整数倍的选取由最简分数的分子分母唯一确定。拿 cos(2t) cos(5t) 走一遍T₁ πT₂ 2π/5比值 π/(2π/5) 5/2最简分数里 m 5、n 2所以 T 2T₁ 5T₂ 2π。代回去验算cos(2(t2π)) cos(2t4π) cos(2t)cos(5(t2π)) cos(5t10π) cos(5t)两个分量同时回到原值。换成 cos(2πt) cos(5t)T₁ 1T₂ 2π/5比值是 5/(2π)无理数。这意味着无论把 t 平移多远两个分量的相位差都不能同时归零波形永远不会精确重复。很多人在这一步觉得「两个周期信号加起来怎么会不周期」其实物理上很直白两个频率不成谐波关系的振荡源相位差会持续漂移不存在重新对齐的时刻。周期信号的和仍是周期信号这句话只在频率比为有理数时成立。2.2 离散时间同一个余弦为什么判据换了一套离散序列 f(k) cos(Ω₀k) 要周期需要存在正整数 N 使 cos(Ω₀(kN)) cos(Ω₀k) 对所有整数 k 成立。最稳妥的充分必要条件是相位增量正好是 2π 的整数倍Ω₀N 2πm → N 2πm/Ω₀所以判据变成2π/Ω₀ 必须是有理数取最简分数 N/m 后分子 N 就是基本周期。等价地也可以写成 Ω₀/(2π) m/N 为有理数分母即最小周期。两条表述说的是同一件事做题时用哪条取决于已知量是 Ω₀ 还是 2π/Ω₀。对照两组数据就清楚了。sin(k/3) 的 Ω₀ 1/32π/Ω₀ 6π 是无理数非周期序列sin(πk/4) 的 Ω₀ π/42π/Ω₀ 8有理数N 8。注意后者和连续域的 cos 长得几乎一样但结论的判定路径完全不同——连续域压根不需要「有理数」这道门槛。多个离散分量相加时规则和连续域同构只是把最小公倍数换成整数意义下的 lcm。cos((π/2)k) 的 Ω₀ π/22π/Ω₀ 4N₁ 4cos((π/3)k) 的 Ω₀ π/32π/Ω₀ 6N₂ 6合成序列的周期是 lcm(4, 6) 12。这两个分量各自的周期都是整数最小公倍数才有意义这也是离散域比连续域「友好」的地方只要判据通过公共周期一定是正整数。为什么离散域凭空多出一道「有理数」门槛根子在于时间轴的拓扑不同。连续域的 t 可以取任意实数平移量是连续可调的两个周期之比只要是实数就总能找到某个公共平移量前提是有理比。离散域的 k 只能落在整数格点上可用的平移量被限制在整数集合里能同时对齐的条件自然收紧。这和「采样」无关哪怕信号天生就是离散的这条判据照样成立。from fractions import Fraction import numpy as np def discrete_period(Omega0, max_den1000, tol1e-9): 返回离散序列 cos(Omega0*k) 的基本周期非周期返回 None r Omega0 / (2 * np.pi) # 要求 r m/N 为有理数 frac Fraction(r).limit_denominator(max_den) if abs(float(frac) - r) tol: # 有理逼近失败判为非周期 return None return frac.denominator # 最简分数的分母即最小 N print(discrete_period(np.pi / 4)) # 8 print(discrete_period(np.pi / 2)) # 4 print(discrete_period(np.pi / 3)) # 6 print(discrete_period(1 / 3)) # None2*pi/Omega0 6*pi 无理 print(np.lcm(discrete_period(np.pi / 2), discrete_period(np.pi / 3))) # 12这段代码把判据直接翻译成了浮点可执行的形式。limit_denominator 的作用是给无理数一个「近似的有理表示」如果这个近似的相对误差超过 tol就认为原数确实无理。tol 不能取太大否则像 6π 这种数会被近似成 22/7 之类误判成周期的也不能取太小浮点运算本身就有 1e-16 量级的误差。max_den 设 1000 是工程上的折中覆盖了绝大多数教材题目的周期范围。2.3 抽样把连续域周期搬到离散域会掉进哪种退化连续信号 cos(ω₀t) 以间隔 Ts 抽样后序列是 cos(ω₀Ts k)数字角频率 Ω₀ ω₀Ts。这是整条链路上最关键的一次坐标变换连续域的频率轴被 Ts 线性压缩到了 [0, 2π) 这个数字频率区间里而周期判据依赖的恰恰是 Ω₀/(2π) 的有理性Ts 一变有理性就可能翻转。取 cos(2t) 以 Ts 1 抽样Ω₀ 22π/Ω₀ π 无理序列非周期。这里没有任何混叠——奈奎斯特要求 Ω₀ π而 2 3.14采样率是够的。所以「不混叠」和「保持周期性」是两件独立的事前者约束的是频谱搬移后者约束的是数字频率与 2π 的比值关系。把这两条混为一谈是很多人第一次学抽样时的翻车点。更极端的例子是 cos(6πt) 以 Ts 1 抽样。此时 ω₀ 6π rad/s连续域周期 T 1/3 s而 Ω₀ 6π满足 Ω₀N 2πm 即 3N m最小正整数解是 N 1。也就是说离散序列的周期是 1每个采样点都相同——cos(6πk) cos(2π·3k) 1序列退化成了一条直流。原始信号在连续域里每 1/3 秒振荡一次采样后完全看不出振荡这才是抽样真正危险的地方它不是把周期变长变短而是可能把周期直接抹掉。反问题「给定虚指数信号 e^{jω₀t}求使抽样后仍为周期序列的 Ts」的答案就藏在这个等式里Ω₀Ts ω₀Ts 2πm/N所以 Ts 2πm/(ω₀N)m、N 取正整数。这个式子说明可用的抽样间隔是一族离散值不是连续区间相邻两个可用值之间的间隔由 ω₀ 决定。工程上选采样率时如果只盯着奈奎斯特下限很可能落进一个让序列非周期的间隔里——虽然对绝大多数应用来说序列周期是不是整数并不影响后续的频谱分析但在做周期图、做循环谱、做同步采样的时候这个坑足够让人调一整天。注意判断抽样后序列的周期性先算数字角频率 Ω₀ ω₀Ts再去算 2π/Ω₀ 的有理性顺序反了容易把 ω₀ 直接代进离散判据里。3. 冲激函数不是普通函数筛选、尺度与卷积的连锁推导3.1 三条运算规则撑起整个 δ 体系δ(t) 严格来说不是函数而是一个广义函数或测度它在 t ≠ 0 处取 0在 t 0 处取值无意义整条曲线下面积为 1。真正定义它的是它和测试函数作用的结果也就是筛选性质∫ f(t)δ(t - t₀) dt f(t₀)这条性质是整个 δ 体系的地基。由它可以直接推出乘法规则 f(t)δ(t - t₀) f(t₀)δ(t - t₀)因为任何与 δ(t-t₀) 相乘的函数在积分里只贡献 t₀ 这一点的值其余部分全被「筛」掉了。取 f(t) t、t₀ 0立刻得到 tδ(t) 0这条恒等式在化简含 δ 的表达式时出镜率极高。第二条是尺度规则 δ(at) δ(t)/|a|。直觉上 a 把时间轴压缩了 |a| 倍面积要守恒幅度就得放大 |a| 倍。注意绝对值a 为负数时时间轴翻转但面积不能变成负的所以 1/|a| 而不是 1/a。这条规则最常被写成 δ(at - b) δ(t - b/a)/|a| 的形式做变量代换时几乎必用。第三条是导数规则。把 δ 理解成「对测试函数做分部积分后转移到 f 上的算子」得到∫ f(t)δ(t - t₀) dt -f(t₀)负号来自分部积分边界项因为 δ 在无穷远处为零而消失。由这条再推乘法规则 f(t)δ(t) f(0)δ(t) - f(0)δ(t)多出来的一项 f(0)δ(t) 是符号最容易写错的地方手算时务必回头用积分验证一遍。3.2 复合自变量与导数最容易写错符号的两类运算复合自变量的 δ(g(t)) 不能直接套尺度公式必须先把 g(t) 的所有单零点找出来在每个零点附近做一阶展开。设 g(t) 的单零点为 t₁, t₂, …, 则δ(g(t)) Σᵢ δ(t - tᵢ) / |g(tᵢ)|以 δ(t² - 1) 为例g(t) t² - 1 的零点是 ±1g(t) 2t在 t 1 处为 2在 t -1 处为 -2取绝对值都是 2所以结果是 [δ(t - 1) δ(t 1)]/2。再以 δ(sin t) 为例零点在 t nπg(t) cos t 在这些点的值是 (-1)ⁿ绝对值恒为 1于是 δ(sin t) Σ δ(t - nπ)——一个周期性的冲激串。这类结果在采样理论里会反复出现。一个必须强调的前提g(t) 的零点必须是单零点g(tᵢ) ≠ 0否则一阶展开失效公式不成立。遇到重零点的情况正确做法是回到筛选性质的定义去处理而不是硬套公式。教材题目里几乎只出单零点但仿真时如果参数取值让两个零点靠得很近数值上会出现幅度爆炸看着像公式错了其实是退化了。导数规则这边除了前面那个带负号的筛选式还有一条高频使用的恒等式tδ(t) -δ(t)。推法是把 f(t) t 代进乘法规则 f(t)δ(t) f(0)δ(t) - f(0)δ(t)f(0) 0、f(0) 1直接得到 -δ(t)。手算化简题里见到 t 和 δ 相乘第一反应就该是换成 -δ(t)而不是去纠结 δ 到底长什么样。3.3 卷积积分从 δ 的筛选性质长出来卷积的定义式 y(t) ∫x(τ)h(t - τ)dτ 看起来像是凭空规定的但它其实是筛选性质加 LTI 两条假设的必然结果。推导链条只有三步第一步任何信号都能写成冲激的叠加x(t) ∫x(τ)δ(t - τ)dτ。这不是什么技巧就是筛选性质把 τ 换成了积分变量。第二步LTI 系统对 δ(t - τ) 的响应是 h(t - τ)。时不变性保证了「延迟的输入产生延迟的响应」线性保证了「输入放大多少倍响应就放大多少倍」所以对 x(τ)δ(t - τ) 这一项的响应是 x(τ)h(t - τ)。第三步线性系统的积分可交换把无穷多个冲激响应叠加起来就得到 y(t) ∫x(τ)h(t - τ)dτ。这条推导解释了为什么 h(t) 能完整刻画一个 LTI 系统系统对所有输入的行为都被它在单个冲激下的响应锁死了。也解释了卷积的一堆性质从哪来——交换律来自变量代换结合律来自级联系统的顺序无关性分配律来自线性与 δ 卷积等于自身则直接来自筛选性质x(t) * δ(t) ∫x(τ)δ(t - τ)dτ x(t)。import numpy as np dt 1e-3 t np.arange(0, 8, dt) # 冲激响应 h(t) e^{-t} u(t) h np.exp(-t) # 激励 x(t) u(t) - u(t-1)即 0 到 1 秒的矩形窗 x ((t 0) (t 1)).astype(float) # 离散卷积近似连续卷积乘 dt 还原积分量纲 y_num np.convolve(x, h)[:t.size] * dt # 解析解0t1 时 y1-e^{-t}t1 时 y(e-1)e^{-t} y_ref np.where(t 1, 1 - np.exp(-t), (np.e - 1) * np.exp(-t)) print(np.abs(y_num - y_ref).max()) # 量级约 1e-3与步长同阶这段代码用数值卷积验证了上面的推导。np.convolve 做的是离散求和 Σx[k]h[n-k]要逼近连续卷积必须乘以步长 dt否则结果的量级会差一个 1/dt 的因子——这是数值验证卷积时最常见的量纲错误。误差量级和 dt 同阶把 dt 从 1e-3 降到 1e-4误差会同步下降一个数量级这本身就是离散近似收敛性的一个直接证据。4. 冲激响应求解特征根定形式初始条件定系数4.1 从微分方程到 h(t) 的三步固定流程对 n 阶常系数线性微分方程求 h(t) 有一套几乎不需要动脑的流程。第一步把激励换成 δ(t)写出特征方程并求根根的类型决定 h₀(t) 的函数形式单实根对应 e^{λt} 的线性组合重根对应 t^m e^{λt}共轭复根对应 e^{αt}cos(βt) 与 e^{αt}sin(βt)。第二步在 h₀(t) 后面乘上 u(t)把所有待定系数留着。第三步用 t 0⁺ 处的初始条件定系数。第三步的初始条件是整套流程的核心也是最容易记错的地方。对 n 阶方程h₀ 在 0⁺ 处的条件是前 n-1 阶导数中只有最高那一阶为 1其余全为 0。二阶方程就是 h₀(0⁺) 0、h₀(0⁺) 1。这个条件的来源是方程左边最高阶导数项对 δ(t) 的「响应」必须正好抵消右边那个 δ(t)积分一次后其余各项贡献的都是阶跃在 0⁺ 处为零。走一个二阶例子y 3y 2y x(t)。特征方程 λ² 3λ 2 0根为 -1 和 -2所以 h₀(t) (c₁e^{-t} c₂e^{-2t})u(t)。代入 h₀(0⁺) 0 得 c₁ c₂ 0代入 h₀(0⁺) 1 得 -c₁ - 2c₂ 1解得 c₁ 1、c₂ -1于是 h₀(t) (e^{-t} - e^{-2t})u(t)。重根的情况单独记y 4y 4y x(t)特征根是二重根 -2h₀(t) (c₁ c₂t)e^{-2t}u(t)。代入两个初始条件得 c₁ 0、c₂ 1所以 h₀(t) te^{-2t}u(t)。重根必须补一个 t 因子这不是记忆技巧而是二阶线性常微分方程在重根情形下解空间维数仍然是 2 的必然要求——只有 e^{-2t} 一个函数撑不起二维解空间。4.2 右端带导数项时h(t) 要多做一次运算方程右端出现 dx/dt 甚至 d²x/dt² 时h(t) 不再等于 h₀(t)需要把各阶导数项按系数线性叠加。最可靠的判断方法是走拉普拉斯域H(s) (b₂s² b₁s b₀)/(s² a₁s a₀)把有理函数做部分分式展开再反变换得到的表达式一定正确。手算时用「h(t) b₂h₀ b₁h₀ b₀h₀」其中 h₀ 是右端仅为 δ(t) 时的解两条路径结果一致。举个完整的例子y 3y 2y x 2x。前面已经算出 h₀ (e^{-t} - e^{-2t})u(t)代入叠加式h(t) h₀(t) 2h₀(t) (-e^{-t} 2e^{-2t})u(t) 2(e^{-t} - e^{-2t})u(t) e^{-t}u(t)这里有个容易困惑的细节h₀ 求导时按理会产生一个 (e^{-t} - e^{-2t})|_{t0} · δ(t) 的项但这个系数在 t 0 处正好等于 1 - 1 0δ 项自动消失。这不是巧合而是「右端最高阶导数阶数低于方程阶数时h(t) 里不会出现 δ 及其导数」这条规律的体现。用拉普拉斯验证H(s) (s2)/(s²3s2) (s2)/((s1)(s2)) 1/(s1)反变换确实是 e^{-t}u(t)零极点对消掉了。再看一个带重根的y 4y 4y x 4x。H(s) (s4)/(s2)² 1/(s2) 2/(s2)²反变换得 h(t) (1 2t)e^{-2t}u(t)。直接用叠加式验算也能对上但部分分式更快而且能立刻看出零极点位置——极点决定衰减速度零点决定 h(t) 在 t 0 处的初值行为这两条信息在判断系统稳定性时比 h(t) 的显式表达式更有用。4.3 卷积计算里的区间划分与 u(t) 配合求出 h(t) 之后零状态响应就是 y(t) x(t) * h(t)。具体计算时有两个固定动作把 h(t - τ) 里的 u(t - τ) 显式写出来它给出 τ t 这个上限把 x(τ) 里的 u(τ) 或 u(τ - a) 写出来它给出 τ 0 或 τ a 这个下限。两个约束一夹积分区间就确定了。以 x(t) u(t) - u(t-1)、h(t) e^{-t}u(t) 为例。卷积写成 ∫x(τ)e^{-(t-τ)}u(t-τ)dτu(t-τ) 要求 τ tx(τ) 要求 0 ≤ τ 1所以0 ≤ t 1 时积分区间 [0, t]y e^{-t}∫₀ᵗ e^{τ}dτ 1 - e^{-t} t ≥ 1 时积分区间 [0, 1] y e^{-t}∫₀¹ e^{τ}dτ (e - 1)e^{-t} t 0 时上下限矛盾y 0分段点出现在 t 0x 的起点和 t 1x 的终点这两个点正好是 x(τ) 与 h(t-τ) 支撑区间的「交接时刻」。做卷积题时先画出两个支撑区间让 t 从 -∞ 滑到 ∞看它们什么时候开始重叠、什么时候完全包含本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?
咨询建站