1. 信号训练基础:信号与系统概述,采样定理,数字信号处理基础

各位同学,咱们今天先聊点基础的。信号处理这个领域,说白了就是跟“波”打交道。我刚开始入行那会儿,总觉得理论离实战很远,后来被一个采样率设错的问题坑过一回,才明白基础不牢,后面调均衡参数全是瞎蒙。所以这一章,咱们把地基打扎实。

1.1 信号与系统——到底在描述什么?

信号,本质上就是信息的载体。电压高低、声音强弱、图片像素,都是信号。系统呢,就是对着信号做操作的玩意儿:放大、滤波、变换。

我习惯把信号分成两大类:连续信号和离散信号。连续信号在时间轴上是连续的,比如模拟麦克风输出的电压。离散信号只在一串时间点上取值,比如AD转换之后的数据。你想想看,真实世界里信号几乎都是连续的,但计算机只能处理离散的,所以我们必须搭一座桥——这就是采样定理要做的事。

我的个人习惯:刚接触一个新系统时,先画信号流的框图,标出哪些地方是连续的,哪些已经离散。画清楚之后,很多问题就暴露了。

1.2 采样定理——数字世界的门槛

说起采样定理,必须提奈奎斯特。这玩意儿其实就一句话:采样频率必须大于信号最高频率的两倍,才能无失真地重建原信号。

为什么?我在项目里遇到过这样的事:一个10kHz的正弦波,采样率设成16kHz,结果还原出来是个6kHz的假信号。这就是混叠。你想想看,如果后面还有均衡器、滤波器,看到的全是假信号,调出来的参数能用才怪。

参数 含义 常见取值
fs(采样率) 每秒采多少个点 8kHz(语音)、44.1kHz(CD)、96kHz(母带)
f_max(信号最高频率) 信号包含的最大频率分量 语音4kHz,音频20kHz
奈奎斯特频率 fs/2,能无混叠表示的最大频率 fs=44.1kHz时,奈奎斯特频率=22.05kHz
我曾经踩过的坑:给一个麦克风阵列做信号处理,忘了在ADC前面加抗混叠滤波器。结果高频噪声被折叠到低频段,花了两周才定位到问题。现在我做任何采样系统,第一件事就是检查抗混叠滤波器的截止频率。

1.3 数字信号处理基础——从时域到频域

数字信号处理,核心就两个域:时域和频域。时域看波形,频域看频率成分。为什么我要强调这个?因为均衡参数调优,本质就是在频域里调整各个频段的增益。

最常用的工具是离散傅里叶变换(DFT),工程上快速实现用的是FFT(快速傅里叶变换)。它能把一段时域信号变成频域表示。嗯,这里要注意:FFT的长度(N点)决定了频率分辨率。分辨率 = fs / N。比如fs=44.1kHz,N=1024点,分辨率大约43Hz。你想看清楚100Hz和105Hz之间的差异?那就得增加N。

// 简单C语言FFT示例(仅示意结构,非完整代码)
#include <math.h>

void fft(double *re, double *im, int n) {
    // 位反转排序
    // 蝶形运算
    for (int len = 2; len <= n; len <<= 1) {
        double w_angle = -2 * M_PI / len;
        for (int i = 0; i < n; i += len) {
            double w_re = 1, w_im = 0;
            for (int j = 0; j < len/2; j++) {
                double u_re = re[i+j], u_im = im[i+j];
                double v_re = re[i+j+len/2] * w_re - im[i+j+len/2] * w_im;
                double v_im = re[i+j+len/2] * w_im + im[i+j+len/2] * w_re;
                re[i+j]   = u_re + v_re;
                im[i+j]   = u_im + v_im;
                re[i+j+len/2] = u_re - v_re;
                im[i+j+len/2] = u_im - v_im;
                // 更新旋转因子
                double t = w_re * cos(w_angle) - w_im * sin(w_angle);
                w_im = w_re * sin(w_angle) + w_im * cos(w_angle);
                w_re = t;
            }
        }
    }
}
核心思路:时域波形 → FFT → 频域幅值/相位 → 分析哪个频率成分需要衰减或增强 → 设计均衡参数。整个过程就是信号处理的基本闭环。

1.4 本章知识体系总览

下面这张图帮大家把这一章的核心逻辑串起来。不用死记,理解流程就行。

信号训练基础知识体系 信号训练基础——核心知识结构 信号(连续/离散) 系统(处理/变换) 采样定理(fs > 2f_max) 抗混叠滤波器 离散信号序列(x[n]) 时域 → FFT → 频域 均衡参数调优 频率分辨率 Δf = fs / N 增加N提高分辨率

图里最左边开始,信号经过系统,然后必须满足采样定理,加上抗混叠滤波器才能变成离散信号。离散信号通过FFT变换到频域,最后才是均衡参数调优。每一步少一个,后面的工作就是空中楼阁。

1.5 实践中的三点提醒

  • 采样率不是越高越好:高了数据量太大,处理延迟也大。选够用的就行。我一般保留20%余量。
  • 先做抗混叠,后采样:这是硬件设计铁律。如果你用软件滤波,也得在降采样前先滤波。
  • FFT结果看幅值谱:相位信息在均衡中很少直接使用,但要注意FFT的“泄漏”效应——加窗函数可以缓解。
一个小技巧:用Python的scipy.signal库做原型验证很快。写一行f, Pxx = periodogram(x, fs)就能得到功率谱密度,比手动FFT省很多事。但是要理解背后原理,否则参数选错了都不知道。

好了,第一章内容就这么多。信号与系统的概念、采样定理的门槛、DFT/FFT的基础应用,这三块是后续所有均衡实战的根基。你只要把这几个点想明白,后面调参的时候就不容易慌。我当年自己啃这些也花了些时间,但一旦理解了,后面就顺了。