信号处理 MATLAB 中的降采样

2025年7月28日 | 阅读 8 分钟

引言

当科学家选择性地保留原始采样集中的数据点时,就会发生信号采样率降低的过程。该技术通常通过去除特定的采样点来保持信号结构和重要的信号特性。

通过数学术语下采样的信号需要通过使用因子 M(作为下采样因子)来降低采样频率 fs。当初始信号以 100 Hz 的采样频率工作并实现 M = 2 的下采样因子时,输出信号以 50 Hz 的采样频率运行。

信号处理中的重要性和用例

下采样的信号处理应用有益于多种操作,例如高效存储、信号传输和信号分析。

  • 数据压缩:数据压缩过程可以通过下采样实现,从而实现存储或传输需求的最佳数据集管理。该技术在受限带宽或基于内存的系统中运行时具有特定的价值。
  • 高效处理:当系统在实时信号处理应用程序中处理下采样数据时,分析速度会急剧增加。
  • 机器学习预处理机器学习预处理操作包括信号下采样,这使得信号能够达到与模型要求相匹配的合适采样率。
  • 音频和视频处理:多媒体系统中的下采样应用实现了音频和视频内容的压缩,同时保持了良好的播放标准。
  • 通信系统:数字通信系统需要信号下采样用于调制步骤和滤波功能,以及改进传输性能优化。
  • 生物医学信号处理:生物医学信号处理技术使用下采样来处理心电图分析和脑电图监测以及其他医疗信号处理应用,以从简化数据中维护诊断信息。

下采样概述

MATLAB 中的下采样任务通过一套强大的工具和函数高效执行。这些工具具有内置功能,可以执行简单和复杂的下采样操作,并保持信号完整性并避免混叠效应。

  • 下采样的核心功能:用户可以使用 downsample 函数直接通过特定的缩减因子减少信号样本数量。decimate 函数中的下采样与低通滤波相结合可防止混叠效应。
  • 支持多速率信号处理:通过其信号处理工具箱,MATLAB 允许用户执行高级多速率信号处理活动,通过这些活动可以优化包含下采样组件的系统。
  • 可视化工具:MATLAB 提供用于信号比较的可视化工具,通过原始信号和下采样信号的图形表示,帮助用户评估下采样对信号质量的影响。
  • 易于实现:MATLAB 的内置函数及其用户友好的语法使用户能够轻松高效地执行处理复杂信号的下采样工作流。

MATLAB 中的下采样

为了降低信号采样率,下采样仅从每个第 n 个样本选择中保留一个样本。此方法使用因子数来确定 n。通过此操作,信号在时域中会失去分辨率,因为它会丢弃大量数据点。

经过 2 倍下采样后,1000 Hz 的采样率变为 500 Hz。通过在此过程中丢弃中间样本,数据存储和处理变得更加高效。除非在下采样操作之前进行预滤波,否则下采样操作会向信号引入混叠伪影。

下采样过程的关键特性

  • 数据点减少: 系统仅保留数据集中的特定点。
  • 潜在的信息丢失: 缺乏滤波会阻止正确的信息保留,因为奈奎斯特频率以上的组件倾向于产生混叠。
  • 效率: 当系统不需要超过某个阈值的精度时,该技术用于最大化资源利用率。

采样率、奈奎斯特率和混叠之间的关系

描述信号的采样率表示每秒收集的样本总数。奈奎斯特率表示等于最大信号频率两倍的频率测量值 (fN =2⋅fmax)。当实现准确的信号重建时,采样率需要等于或高于奈奎斯特率。

通过下采样操作可以降低采样率。当降低采样率导致高于奈奎斯特率的频率折回较低范围时,信号会通过混叠失真。

为防止下采样期间的混叠

  • 在下采样之前,信号会经过低通滤波过程。该滤波器会去除下采样后超过奈奎斯特率的频率信息。
  • 根据信号带宽选择下采样因子,以便新的采样率与之对齐。

示例

  • 原始采样率:10 kHz
  • 信号带宽:3 kHz
  • 下采样因子:2
  • 新采样率:5 kHz
  • 除非提前滤除高于 2.5 kHz 的频率分量,否则混叠将成为问题。

下采样和抽取之间的区别

下采样与抽取有相似之处,但仍然是不同的操作程序。

  1. 下采样
    • 该方法侧重于通过从 n 个样本中选择每个 n 来获得新的采样率。
    • 下采样不包括任何内置滤波,因此如果信号未预滤波,则可能会出现混叠效应。
  2. 抽取
    • 该方法包括低频滤波,然后进行下采样以阻止混叠效应。
    • 低通滤波器消除高频内容,这些内容在选择每个第 n 个样本之前被消除。
    • 该过程构成了一个完整的操作,该操作同时执行信号滤波和速率降低功能。

在 MATLAB 中,使用的函数反映了这些差异

  • downsample:在执行下采样操作时,无需使用滤波器即可立即降低采样率。
  • decimate:当存在混叠可能性时,应在信号下采样之前通过 decimate 对信号进行滤波。
  • 抽取一词通过将预滤波技术与单一操作中的采样率降低相结合,包含了所有下采样功能。

MATLAB 中用于下采样的主要函数

通过 MATLAB 函数执行下采样操作为用户提供了满足信号处理需求的广泛功能。

1. downsample 函数

downsample 函数通过从下采样因子 N 开始选择每个第 N 个样本来执行信号采样率降低。该函数允许在不应用滤波的情况下进行下采样,这使得在没有混叠问题时可以使用。

语法

  • x:输入信号(向量或矩阵)。
  • n:下采样因子(大于 1 的整数)。
  • y:下采样信号。

基本示例

  • 当使用 downsample 函数时,它直接选择一些样本,而忽略其余的样本。
  • 直接使用此函数时请注意混叠效应,因为为了实现无混叠操作,必须对信号进行预滤波。

2. 使用 decimate 进行组合下采样和滤波

作为 downsample 的替代方案,decimate 函数在执行采样率降低之前应用抗混叠低通滤波器。滤波特性使得此函数适用于包含可能导致混叠效应的高频内容的信号。

语法

  • x:输入信号。
  • n:抽取因子。
  • 'fir':您可以通过设置 'fir' 关键字参数来指定使用有限脉冲响应 (FIR) 滤波器。

基本示例

  • decimate 函数通过在样本率降低之前执行低通滤波器来防止混叠形成。
  • 用户可以在 IIR 滤波器 和指定 FIR 滤波器之间进行选择,以实现线性相位响应。

3. resample 在高级插值和下采样中的作用

resample 函数使用户能够以任何间隔调整信号采样率,同时处理从较高采样率到较低采样率的变化。各个函数通过将滤波与插值过程相结合来实现质量优化。

语法

  • x:输入信号。
  • p:重采样比率的分子(例如,对于 3 倍下采样,p=1p = 1)。
  • q:重采样比率的分母。
  • beta:滤波的可选 Kaiser 窗参数(默认为 5)。

基本示例

  • 用户通过 resample 函数拥有完全控制重采样操作的权力。
  • 结合的低通滤波步骤,然后是插值,在过程中保留了信号质量。
  • 此应用程序可以有效地处理下采样和上采样任务。

函数比较

函数目的过滤用例
downsample通过因子 NN 进行简单下采样不能当混叠不是问题时。
decimate带抗混叠滤波的下采样是(IIR 或 FIR)用于降低噪声信号中的采样率。
resample带插值的灵活重采样是(Kaiser 窗滤波器)用于精确重采样,失真最小。

在 MATLAB 中执行下采样的步骤

信号处理操作使用下采样技术作为根据各种应用降低信号采样率的基本方法。

1. 导入和准备信号数据

MATLAB 中的信号下采样过程通过在任何必要的预处理步骤后加载信号数据开始。

步骤:

导入信号: 操作员可以通过从存储中加载信号或通过 MATLAB 程序生成信号数据来导入信号。

示例:audioread 函数可以加载音频文件内容,而生成正弦波可以通过 sin 函数实现。

预处理信号(如果需要)

  • 信号归一化将所有值置于特定范围以满足特定要求。
  • 在降低采样率时,必须实施低通滤波器以防止混叠。

2. 选择下采样因子

信号采样频率的降低量取决于其下采样因子。下采样因子决定输出采样率以及其选择的奈奎斯特准则。

步骤:

  • 指定下采样因子: 令 D 表示下采样因子。
  • 计算新的采样率: 新的采样率通过将原始采样率除以因子 D 来得出。

3. 应用下采样函数

通过 MATLAB 中的内置函数降低采样率。

步骤:

  • 直接下采样: downsample 函数使用户能够从原始信号中选择每个第 D 个样本。
  • 带滤波的抽取: 下采样与滤波的组合应通过 decimate 函数执行。

4. 可视化结果(下采样前后)

通过在时域和频域中查看重采样前后的信号来检查下采样效果。

步骤:

绘制时域信号

频域分析(可选)

快速傅里叶变换 (FFT) 分析应通过评估下采样前后的条件来验证光谱变化。


下一主题Matlab VPN