震惊,怼老板高速怒写六千字!直接解剖 SINC 函数(非常通俗版)

上篇文章其实已经写的挺全面了,但是对于 SINC 这个函数,还可以换一个角度:方波做傅里叶变换/傅里叶级数”。这一视角非常重要因为sinc 函数 = 方波(矩形脉冲)在频域里的自然形状。 另外也可以回归它作为函数的本身性质做研究。

矩形 ↔ sinc

方波 / 脉冲 / 门函数在时域里越方 → 在频域里的形状越像 sinc

频域“sinc 主瓣 + 无穷旁瓣”;而方波只是“无限长周期矩形脉冲列”,因此它的傅里叶变换由一串 sinc 加采样点构成。

从“单个矩形脉冲”说起:sinc 最原始的来源

先看一个最基础的信号:

就是一个 宽度为  的矩形脉冲

它的傅里叶变换

计算得到:

这就是标准 sinc,已经在前面的图里看到过。

解释:为什么一定是 sinc?

积分上界、下界是固定常数 → 在频域中出现 ;频率变量在分母里是因为“对指数积分时出现 ”这两个表达是从 傅里叶变换 的角度解释矩形窗在频域中为什么会出现 sinc 函数

“积分上界、下界是固定常数 → 在频域中出现 

这个意思是说,当你对一个信号进行 傅里叶变换 时,信号的时域表示(比如矩形窗)和频域表示(比如 sinc 函数)是通过积分关系连接的。

傅里叶变换的基本形式是:

这里, 是时域信号, 是频域信号。特别地,当时域信号是 矩形窗(rectangular window) 时,它在时域上是有限长度的,具有一个固定的上下界,例如在  到  之间为 1,其余地方为 0。

傅里叶变换后的频域响应就是:

这个积分是一个常数区间的积分,因为矩形窗在时域中有固定的时长 。计算这个积分:

这个结果正是 sinc 函数,其主要形态为:

为什么出现  ?

因为积分的形式:时域信号为矩形窗时,傅里叶变换对应的就是一个 指数函数 在有限区间上的积分。这个积分结果会产生一个  函数,而  就是傅里叶变换中常见的 sinc 形状;矩形窗的傅里叶变换由于时域信号的固定时间范围,导致频域中出现了一个 sinc 函数,它的主瓣宽度和时域信号的时长  有关。

“频率变量在分母里是因为’对指数积分时出现 ’”

这个意思是说,傅里叶变换 中 频率变量 出现在分母中,源自于在 时域信号与复指数的积分 过程中,所得到的频域响应公式中有一个与 频率  相关的项。

具体来看,傅里叶变换的公式是:

这里 指数项 产生了 **复频率变量 **,当你对时域信号进行积分时,得到的频域响应有一个与频率  成反比的因子。

那为什么会有  的项呢?

对于矩形窗而言,时域的信号会有一个固定的长度,而在做傅里叶变换时,复指数函数  会因其 频率成分的变化,在频域产生一个以  为尺度的衰减项;最后频率变量出现在分母中,意味着频率  越大,频域响应会越小。这正是 高频分量衰减得更快的原因,也就是 sinc 函数旁瓣的衰减速度;正是因为频率  在分母中的项,体现了高频分量衰减的趋势,造成了 sinc 函数旁瓣 的出现。

因此:

只要一个信号在时域有“硬截断”,频域一定会出现 sinc。

任何矩形窗、时间限制、片段截取……频域都会出现 sinc。

从一个矩形脉冲列到“方波”:周期采样 → sinc 加谐波

方波(周期矩形波)定义

设周期为 ,占空比为 50% 的方波:

(高电平持续半周期),

这是一个“周期性矩形脉冲列 + 直流移位”。

方波傅里叶级数:谐波系数包含 sinc

计算第 k 次谐波系数(只取偶性简化):

结果是:

更准确地(50% duty):

只存在奇次谐波(k=1,3,5,…),且幅值:

而这个形式就是 sinc 的采样点:

方波的频谱只有 奇次谐波,衰减与 1/k 成正比;这其实就是 sinc 主瓣在奇数点上被“采样”出来的效果。

方波并不是只和“1/k”衰减有关,它本质是 sinc 形状的频谱被周期采样

时域卷积 / 频域乘法视角:方波 = 矩形脉冲 * Dirac comb

方波可以写成:

傅里叶变换:

rect(t) → sinc

impulse train → impulse train(频域 comb)

因此

也就是:

SINC 函数新视角:方波(矩形脉冲)在频域里的自然形状(数学角度)

方波频域 = sinc 形状的包络 + 离散谐波 lines

方波的频谱长这样:主瓣结构由 sinc 决定,各个谐波的幅度刚好落在 sinc 包络上,所以越高频谐波 amplitude 越小(~1/k)

这等于从系统角度再证明一遍:

方波 = sinc 包络下的离散 harmonics。

从建模角度:方波是“sinc 的频域采样”

如果我们用数学建模的风格写,会是这样:

单个矩形脉冲 → sinc

无限脉冲列 → 方波(周期)

傅里叶变换使用卷积与采样性质:

因此各个谐波值是:

也就是:

方波谐波 = sinc 包络在 kf0 处的采样值

常见的公式:

其实就是“sinc 形状的采样”(50% duty 时奇次点落在 sinc 的凹凸位置)。

(图我放在了下面)

单个矩形脉冲 → 连续频谱就是 sinc

我们先看最原始的“方”的东西:一个有限时长的矩形脉冲

它的傅里叶变换:

数值积分的 |P(f)| 与理论 T·|sinc_norm(fT)| 完全重合

时域:宽度 T 的矩形

频域:主瓣宽度 ≈ 2/T,零点间隔 1/T 的 sinc

这已经把“时宽 × 带宽 ≈ 常数”的味道给出来了:

再强调一句你未来在脑子里要牢记的 pair:矩形 ↔ sinc

周期方波 = “sinc 包络 + 离散谐波”

构造一个周期方波(占空比 50%、幅度 -1/+1):

傅里叶级数告诉我们:

只包含奇次谐波:k = 1,3,5,…

谐波幅度:

而这其实可以从“矩形脉冲的 sinc 频谱”采样得到:方波可以看成“周期性的矩形高电平 + 直流”,频谱 = 单个矩形的 sinc 频谱 × 周期冲激列(频域采样),于是:

其中  是高电平持续时间(对于 50% duty,),代入具体数字就得到恰好等价于  的形式。

FFT vs 理论的数值对比(第二组图)

用 Python 做的是:

以 fs=2000 Hz、f0=5 Hz 生成 4 个周期的方波;做 N=8192 点 FFT,取正频率部分;对每个 k=1..25 的谐波,从 FFT 中找最近的频率点,估计幅度;和理论值 (仅奇数 k 非零)作对比。

在图中看到:stem(实线杆)是 FFT 估计的谐波;虚线是理论 ;二者几乎完全贴合——证明“方波谐波幅度 = sinc 包络采样点”这一事实在数值上成立。

SINC 包络可视化

又画了一张“包络图”:

image-20251116141719316

连续频率 f 上画一个归一化的 sinc 包络(只保留形状);在 k·f0 这些点上画出理论谐波幅度(同样归一化);

会看到:

所有谐波都老老实实沾在 sinc 的主瓣和旁瓣上。

将来看任何“脉冲列 / 方波 / PWM”的频谱很有用—只要你知道单个脉冲的 sinc 形状,就知道整串谐波的包络大概长什么样。

占空比 D 变化:脉宽变 → sinc 宽度变 → 频谱形状变

接着做了第三组图:不同占空比 D 的周期矩形波频谱

image-20251116141730962

时间域建模

设周期 ,占空比 D,高电平持续时间 

每周期内

本质:每周期有宽度为  的矩形脉冲(加一个偏置)。

单周期矩形的频谱依然是 sinc

单周期矩形:

所以无论占空比 D 是多少,频谱包络永远是 sinc,只是宽度和零点位置变了

脉宽越窄(D 小):主瓣越宽,频谱能量撒得更远(高频更多)。

脉宽越宽(D 大):主瓣越窄,频谱更集中在低频。

FFT 可视化

image-20251116142222871

在代码里我选了 D=0.2, 0.5, 0.8 三种情况,生成一个周期矩形波:

xD = ((t2 % T0_2) < (D * T0_2)).astype(float) * 2 - 1

做 FFT,取幅度归一化后画在 dB 尺度上(0~20 倍基频)。

可以很直观地看到:D 小(窄脉冲)谱主瓣更宽,高频肩部抬得更高;D 大(宽脉冲)谱主瓣更窄,高频比较快掉下去。

占空比改变 = 改变单个矩形的宽度 τ → 改变 sinc(fτ) 的主/旁瓣结构→ 谐波之间的相对强弱全都随之改变。

1/k 衰减的数学来源:sinc 采样的显式公式