傅里叶轮盘画
任何闭合曲线都能拆成一串旋转的小圆:复 DFT 给每个圆定下半径 |cₖ|、 转速 k 和初相。圆圆相衔、各转各的,最末端那支笔尖就描出原图。 按能量降序只留前 M 个圆 —— 心形线 3 个圆就成形,五角星的尖角却怎么都磨不平。
曲线
心形线r = 1 − cosθ:top3 圆就吃掉 99.6% 能量 —— 最"省事"的曲线。
- 你的线(自动闭合)
- 等弧长采样的 256 个点
- 小圆(半径 = |cₖ|,转 k 圈/周期)
- 笔尖(画出重建线)
- 目标原图(虚线)
轮盘账本
—- 启用圆数
- —
- 能量占比 Σ|c|²(前M)/Σ|c|²
- —
- 重建误差 max|笔尖−原图|
- —
- 最强分量 k
- —
- 次强分量 k
- —
- 磨平 99.9% 能量要
- —
"重建误差"沿时间取最大偏差 —— 能量占比高不代表长得像:尖角占的能量小,却全在轮廓最显眼的地方。
圆链怎么算
把闭合曲线采成 N 个复数点 z₀…z_{N−1}, 做复离散傅里叶变换:cₖ = (1/N) Σ zₙ e^{−2πikn/N}。 每个 cₖ 是一支"基相量":模 |cₖ| 就是圆半径, k 就是它一个周期里转的圈数(负 k 倒转)。 重建 z(t) = Σ cₖ e^{2πikt} 逐项累加 —— 几何上正是 本轮圆心钉在上轮末端的圆链。
和 FFT 页是同一支变换的两种活法:那页把信号投到单位根上算得快, 这页干脆不加速(256 点朴素 DFT 一次约 6.5 万次复乘,够用了),把注意力全放在 几何上 —— 每个频率原来是个转圈的小圆。
怎么玩
- 心形线把 M 从 1 拧到 10。第 3 个圆出现后基本成形,再往上是"过度装修":账本里能量 99.6% 起步。
- 换五角星。同样的能量占比,轮廓却差得多 —— 看账本最后一行:"磨平 99.9% 能量"要圆数暴涨。尖角是频谱的照妖镜。
- 手绘一条。在左框里按住画圈(自动闭合):画得越圆,前两三个圆就包干全部;画的涂鸦越怪,长尾越长。
- 拖到 M=1。只剩最大那支相量:一个以原点为心的转圈,任何曲线都先退化成一个大圆。再把 M 一格一格加回去,看原图一点点"长"回来。
- 看频谱条。金色是启用的前 M 根,灰色被低通掉;对数观感下的心形线谱像悬崖,五角星的像沙滩。点某根柱 = 把 M 设到它的名次。
- 键盘。空格 = 转起来/停。画布可拖拽平移、滚轮缩放。
为什么"能量高"不等于"画得像"?
Parseval 说的是平方和:尖角、折点这类局部特征占的能量极小(比例上可忽略), 但它们决定了轮廓的观感。所以账本把能量占比和最大重建误差并排放 —— 前者是"用了多少信息",后者才是"像不像"。傅里叶级数在折点处的吉布斯振铃,误差条上看得清清楚楚。