信号的基本运算:加法和乘法、时移、反折与尺度变换、微分与积分
好,咱们继续往下走。上一章我们把信号的基本概念和分类理清了,这一章要动真格的了——信号的基本运算。
说实话,我刚入行那会儿,觉得这些运算不就是数学课上的东西嘛,有啥好学的?直到我在一个雷达信号处理项目里,因为搞混了时移和反折的顺序,导致整个脉冲压缩算法跑出来的结果完全不对……嗯,从那以后,我再也不敢小看这些“基础运算”了。
这些运算,说白了就是你对信号这个“波形”能做的各种操作。你把它当橡皮泥捏也行,当积木搭也行。掌握了它们,你才能看懂后面那些高大上的傅里叶变换、滤波器设计到底在干什么。
3.1 信号的加法与乘法
这是最直观的两种运算。两个信号相加,就是对应时刻的值加起来。两个信号相乘,就是对应时刻的值乘起来。
数学上很简单:
- 加法:\( y(t) = x_1(t) + x_2(t) \)
- 乘法:\( y(t) = x_1(t) \cdot x_2(t) \)
你可能会问:“这有啥用?” 我举个例子你就明白了。
加法最常见的应用就是混音。你在KTV唱歌,话筒的声音和伴奏的声音叠加在一起,就是加法。在通信系统里,多路信号复用也是加法——把几路信号加起来一起传,到了接收端再分开。
乘法就更关键了。调制技术,比如调幅(AM),本质上就是用载波信号去乘基带信号。我在做无线通信系统架构时,乘法器是每个射频前端都绕不开的模块。
核心要点:加法是叠加,乘法是调制。两者都是线性运算,但乘法会改变信号的频率成分——这一点后面讲傅里叶变换时会反复提到。
3.2 信号的时移
时移,就是把信号在时间轴上整体向左或向右平移。
- 右移(延迟):\( y(t) = x(t - t_0) \),其中 \( t_0 > 0 \)。波形整体向右挪了 \( t_0 \) 秒。
- 左移(超前):\( y(t) = x(t + t_0) \),波形整体向左挪了 \( t_0 \) 秒。
这里有个容易搞混的地方:为什么 \( x(t - t_0) \) 是右移?
我教你一个笨办法,但很管用:你想想看,原来在 \( t = 0 \) 时刻的值,现在要等到 \( t = t_0 \) 时刻才出现。这不就是延迟了吗?延迟就是右移。
我在项目中遇到过最典型的时移场景就是同步。两个信号因为传输路径不同,到达时间不一样。你得把其中一个时移一下,让它们对齐。比如在数字通信里,接收端要做符号同步,本质上就是在估计时移量。
我的小技巧:画图时,先标出原信号的关键点(比如峰值、过零点),然后看这些点往哪个方向移动了。往右就是右移,往左就是左移。别死记公式,画图最直观。
3.3 信号的反折
反折,也叫时间反转。就是把信号沿着纵轴(\( t = 0 \))翻过来。
数学表达:\( y(t) = x(-t) \)
说白了,就是把磁带倒着放。原来先发生的变成后发生,后发生的变成先发生。
我曾经在做一个匹配滤波器设计时,就用到反折。匹配滤波器的冲激响应,就是发射信号的反折再加一个时移。当时我手动推导了半天,最后发现其实就是把信号“倒过来”再“挪一下”。
注意:反折和时移的顺序不能乱!比如 \( x(-t + 1) \),是先反折再右移1,还是先左移1再反折?答案是:先反折再右移。你可以这样记:把 \( -t + 1 \) 写成 \( -(t - 1) \),先做 \( t - 1 \)(右移),再做反折。嗯,这个顺序我当年也栽过跟头。
3.4 信号的尺度变换
尺度变换,就是把信号在时间轴上“压缩”或“拉伸”。
- 压缩:\( y(t) = x(at) \),其中 \( a > 1 \)。波形变“瘦”了,变化更快了。
- 拉伸:\( y(t) = x(at) \),其中 \( 0 < a < 1 \)。波形变“胖”了,变化更慢了。
你想想看,如果 \( a = 2 \),原来在 \( t = 1 \) 秒才出现的值,现在在 \( t = 0.5 \) 秒就出现了。整个信号被压缩到原来一半的时间长度里。
这个运算在时频分析里特别重要。比如小波变换,就是通过尺度变换来改变分析窗口的大小。我在做语音信号处理时,用尺度变换来调整语速——想让人说话快一点,就把信号在时间轴上压缩一下。
一个容易混淆的点:尺度变换只改变时间轴,不改变幅度轴。信号的“形状”变了,但每个点的“高度”不变。
3.5 信号的微分与积分
这两个运算来自微积分,但在信号处理里,它们有非常直观的物理意义。
微分
微分就是求信号的变化率。数学上:\( y(t) = \frac{dx(t)}{dt} \)
在电路里,电容的电流和电压的关系就是微分:\( i(t) = C \frac{dv(t)}{dt} \)。在图像处理里,边缘检测用的就是微分算子——变化剧烈的地方就是边缘。
我记得有一次调试一个加速度传感器的信号,原始数据噪声很大。我试着对信号做微分,结果噪声被放大了好几倍,完全没法看。后来才意识到,微分对高频噪声特别敏感。所以做微分之前,通常要先做低通滤波。
积分
积分就是求信号的累积效果。数学上:\( y(t) = \int_{-\infty}^{t} x(\tau) d\tau \)
在物理里,速度积分得到位移,加速度积分得到速度。在电路里,电容的电压和电流的关系就是积分:\( v(t) = \frac{1}{C} \int i(t) dt \)。
积分有平滑噪声的效果。因为积分相当于对信号做平均,随机噪声会被抵消一部分。但积分也有个问题——它会引入直流偏置。如果信号有直流分量,积分后这个分量会一直累积,导致结果漂移。我在做惯性导航系统时,就吃过这个亏。加速度计的信号积分成速度,速度再积分成位移,结果因为直流偏置,位移误差越来越大。后来加了高通滤波才解决。
避坑指南:我曾经在数字信号处理里直接用差分代替微分,用累加代替积分。但要注意,离散域的微分和积分跟连续域不完全一样。差分会放大噪声,累加会累积误差。做之前一定要先评估信号的信噪比。
3.6 综合运算的顺序问题
当多个运算组合在一起时,顺序很重要。比如 \( x(2t + 1) \),是先时移还是先尺度变换?
我建议你记住这个原则:先做尺度变换,再做时移。
为什么?因为尺度变换改变的是时间轴的单位长度,时移改变的是时间轴的起点。先压缩/拉伸,再平移,逻辑上更顺。
具体到 \( x(2t + 1) \):
- 先做尺度变换:\( x(t) \rightarrow x(2t) \),压缩为原来的一半。
- 再做时移:\( x(2t) \rightarrow x(2(t + 0.5)) = x(2t + 1) \),左移0.5秒。
你验证一下:原来在 \( t = 0 \) 的值,现在在 \( t = -0.5 \) 出现。没错吧?
总结一下:信号的基本运算,就是你对信号这个“波形”做的各种操作。加法乘法是组合,时移反折是移动,尺度变换是缩放,微分积分是变换。这些是信号处理的基本功,后面所有的分析都建立在这上面。别嫌它们简单,真正用的时候,细节决定成败。
好,这一章就到这儿。下一章我们讲信号的正交分解和傅里叶级数——那才是真正打开信号处理大门的钥匙。