凌晨一点零八分。
杨康睿打开邮箱时,收件箱里躺着陈建国深夜发来的邮件,标题只有五个字:“有趣的记录”。附件是一个压缩包,里面装着几段数据文件,还有一个文本说明。
他点开文本,快速扫过:
“杨先生,我把节点#7内部存储的历史数据整理了一遍。在设备进入静默待机前约十分钟的录段里,发现一段异常记录。设备同时接通了结构振动传感器和空气声波传感器,在两个通道中都捕捉到一个短促的信号。波形相似,但空气声波到达的时间比结构振动晚了约零点几秒。我猜测信号源在设备附近几十米范围内,但我手上没有完整的建筑图纸,无法定位。你或许可以用互相关分析测出精确延迟,再结合声速换算出距离。”
杨康睿把文件导入音频分析软件。两条波形几乎重叠在屏幕上。他单独听了听空气声道的录音——像一声钝响,像是远处有人把很重的东西放在地上发出的闷响。结构振动通道则显示为一个尖脉冲,早于空气声到达。他试着目测计算两者的时间差,只能看出大约几百毫秒,无法精确。
他戴上耳机,又把那两段波形来回播放了几遍。凌晨三点四十分,他带着这个问题沉入宫殿。
爱因斯坦坐在黑板前,正在画两条形状相似但水平错开的曲线。他看见杨康睿进来,指了指黑板:“你今天带来了两道波形,一前一后,形状相似。你想知道它们到底差了多少时间,对吗?”
“是的。”杨康睿说,“但我不知道该用什么方法。”
“你已经学过了自相关——一个信号和它自身比较,寻找隐藏的周期。”爱因斯坦说,“今天我们把它推广一步:两个不同信号互相比较,寻找它们之间的延迟。这叫互相关。”
他在黑板左侧写下:
R_{xy}(\tau) = \int_{-\infty}^{\infty} x(t) \cdot y(t+\tau) \, dt
“如果x和y来自同一个事件,只是y比x晚到了τ₀时间,那么当τ=τ₀时,x(t)和y(t+τ₀)的波形完全重合,乘积始终为正,积分得到最大值。当τ偏离τ₀,重合度下降,积分值减小。所以找到R_{xy}的最大点,就找到了移位量τ₀。”
杨康睿微微点头:“那么自相关只是互相关的一种特殊情况,当x=y的时候?”
“完全正确。”爱因斯坦笑了,“你的直觉很好。”
他又在黑板上写了一个离散的例子:
“假设x = [0, 1, 0, 0],它表示一个很短的声音在第二时刻到达。y = [0, 0, 1, 0],表示同样的声音在第三时刻到达。那么y相对于x延迟了1个采样点。我们取k=1,计算互相关:”
R_{xy}[1] = \sum_n x[n] \cdot y[n+1] = 0\cdot0 + 1\cdot1 + 0\cdot0 + 0\cdot0 = 1
“而在其他k值,最多只有0。所以峰值出现在k=1,即延迟一个采样点。这就是互相关的作用。”
“但真实的信号不是这么干净。”杨康睿说。
“对,噪声会叠加在信号上。”爱因斯坦点头,“但噪声通常和信号不相关,噪声与噪声之间也不相关。当大量采样点相乘再累加时,噪声贡献的项正负相消,只有真正的信号延迟处会长出一个清晰的峰。只要信号不太弱、采样长度足够,它就能从噪声中浮出来。”
欧拉从旁温和补充:“在离散处理中,采样频率是已知的,如果你得到峰值出现在第k个采样点,那么实际时间延迟就是k除以采样频率。剩下的,就是物理问题了。”
杨康睿心中渐明。他在宫殿里把公式又演算了一遍,确认自己理解无误。
凌晨四点五十分,他回到现实。
电脑屏幕上的波形还在。他打开命令行工具,写了一段简单的互相关计算:把两段数据加载为数组,用numpy的correlate函数计算互相关,找到峰值索引,再除以采样率。
程序运行了几秒,输出一个数字:0.142。
延迟零点一四二秒。他又验算了一遍——峰值明显,远高于附近的旁瓣。他确信这个结果是真实的。
现在,物理计算。杨康睿翻出建筑资料:结构振动在混凝土中的传播速度约每秒3000米,空气声波约每秒343米。同一个事件产生的振动先通过结构传来,声音后通过空气传来。两者的时间差满足:
\Delta t = \frac{d}{c_{air}} - \frac{d}{c_{structure}}
他代入数值:
0.142 = \frac{d}{343} - \frac{d}{3000} 0.142 = d \cdot \left(\frac{1}{343} - \frac{1}{3000}\right) \approx d \cdot 0.002582 d \approx \frac{0.142}{0.002582} \approx 55\text{米}
距离节点#7大约五十五米。杨康睿在建筑平面图上以B2-F-02B为圆心,画了一个半径55米的圆。圆弧穿过地下二层西北侧的一片区域——那里是旧设备库房和废弃空调机房的交界,平时几乎没有人去。
凌晨五点二十分。
杨康睿拿上手电筒,向地下二层西北角走去。走廊尽头的墙面上挂着一块锈迹斑斑的指示牌:“设备库房”。门是铁皮的,上面挂着一把崭新的U型锁——与周围陈旧的环境格格不入。
他蹲下来,用手电筒照了一下锁体。锁芯没有锈迹,锁梁上有新鲜的刮痕,显然最近被人开过。他侧耳贴近门缝,听到门内传来极其微弱的电流声——像是某种电子设备在持续运转。
他没有撬锁。他拿出手机拍下门牌号和U型锁的照片,又把周围的环境仔仔细细观察了一遍。然后他退回到走廊拐角,关掉手电筒,静静站了一会儿,确认没有人注意到他。
回到值班室,杨康睿在记录本上写下:“地下二层西北设备库房发现新锁,门内有微弱电子设备运行声。方位与节点#7记录的异常信号源基本吻合。待进一步勘察。”
他合上本子,望向窗外。天光尚未全亮,晨雾低低地压在珠江面上。那扇门后面的电流声,他没有告诉任何人。但他知道,那可能是沉寂了很久的东西,正在等待被再次发现的那一天。
而这一次,他手上有数学给的一把尺子——用来测量时间,也用来用手电筒照进那些从未被照亮过的角落。
第十七话·终