奈奎斯特说两倍多采样就可以还原信号,为什么采出来是锯齿波?

Author: 祯仪科技 【 Original 】 2025-12-17

    前言


奈奎斯特采样定理(奈奎斯特-香农定理)明确:若连续信号x(t)的最高频率(带宽)为Fc,且采样率Fs>2Fc,则信号可通过采样值无失真地重建原信号。对此,不管是真明白还是假明白,我们都深信不已。

但看着ADC采集的那一串数字信号,你有没有觉得它们不是原信号“亲生的”?比如,模拟世界中的原信号是漂亮又平滑的波形,采集出来的为什么是“张牙舞爪”的锯齿波有没有种魔童转世的感觉?1765971910560413.png 

图1 原始信号VS离散采样信号

若“温太医”拍着胸脯告诉您,这个数字信号就是原信号“亲生的”,那我们应该怎样来“脑补”这个数字信号?怎样科学地在我们脑中重建这个信号呢?

其实,锯齿波(连折线)我们直观而想当然的重建方法,奈奎斯特采样定理对应的信号重建方法是 sinc函数插值(理想低通滤波重建)——这是数学上唯一能实现“无失真还原”的方法,也是所有工程化重建方案的理论基础





一、采样是“编码”,重建是“解码”

要理解重建方法,需先明确采样与重建的对应关系:

01

采样过程

本质是用“冲激串”对连续信号x(t)进行调制,得到离散采样值x(nTs) ( Ts=1/Fs为采样周期)。在频域上,采样会使原信号频谱以Fs为周期重复(形成“镜像频谱”),这一点我们在奈奎斯特采样定理和带通采样定理是一回事吗?中说了不少;

02

重建核心

需从离散采样值中“还原”原始连续频谱,关键是滤除所有镜像频谱,只保留基波频段(-Fc~Fc——而能完美实现这一目标的,正是“理想低通滤波器”,其脉冲响应恰好是sinc函数,这一点,我们在奇妙的sinc,从博通公司商标到雷达脉冲分析》中说了不少。

2.png图 2 Sinc函数的波形





二、理想重建:sinc函数插值(数学上的无失真方案)

2.1 重建公式(采样定理的逆应用)

根据奈奎斯特-香农定理的逆定理,连续信号x(t)可由其采样值x(nTs)唯一重建,公式为:

1765972028657776.png

其中:

6.png

这就是理想sinc插值公式。

2.2 为什么是sinc函数?——时域+频域的双重适配

sinc函数的独特气质,使其成为“无失真重建”的唯一选择,可从两个维度理解:

(1)时域视角:采样点“锚定”,中间点“平滑补全”

  •  对于原有采样点(t = nTs) :

1765972241424143.png

而其他采样点对应的:

9.png

因此公式简化为:

11.png

即:原始采样点完全保留,不产生失真;

  •  对于中间点(t≠Ts):每个点由周围所有采样点通过sinc函数“加权求和”得到——sinc函数的权重随时间距离衰减(符合信号的时域相关性),就像用无数个“钟形曲线”(sinc波形)以采样点为中心叠加,最终形成平滑连续的原始信号,补全的波形无锯齿、无畸变。


(2)频域视角:理想低通,精准滤除镜像

sinc函数的傅里叶变换是矩形窗(理想低通滤波器的频率响应):

1765972369867763.png

这意味着:

  •  理想低通滤波器的截止频率 Fc=Fs/2(恰好是奈奎斯特频率),能完美保留-Fc~Fc内的原始信号频谱;

  •  采样产生的镜像频谱(±Fs±Fc,±2Fs±Fc,…)均在截止频率之外,被完全抑制——从频域上实现了“频谱净化”,确保重建信号与原始信号频谱一致。

1765972416244808.png

图3 Sinc函数时频关系对应示例


2.3 直观示例:正弦信号的sinc插值重建

一、matlab示例:

对一个2Hz正弦波,用5Hz采样,对比采样后的波形与原始波形,然后再用sinc函数插值,重建波形,再对比插值后的波形与原始波形:

1765972470855735.png

图4 用sinc函数插值重建波形实例

通过上图我们看到,虽然离散采样点的折线图看起来非常“难看”,我们很难直观地认为它完全代表了原始连续信号。

但通过对离散采样点进行sinc插值后,我们可以看到:插值结果神奇地“拟合”出了原始信号的样子,抛开两端因卷积数据中断带来的较大误差,中间段插值的误差降到了极低的水平。

验证源代码如下:

% SINC卷积插值示例

clear; clc; close all;


% 1. 生成原始连续信号参数

f0 = 2;                    信号频率(Hz)

fs = 5;                   采样频率(Hz),满足fs > 2*f0

T = 5;                     信号时长(s)

t_continuous = 0:0.001:T;  高密度时间轴,用于绘制"真实"连续信号


% 2. 生成原始连续信号和离散采样信号

x_continuous = sin(2*pi*f0*t_continuous);  原始连续信号


离散采样

t_sampled = 0:1/fs:T;                     采样时间点

x_sampled = sin(2*pi*f0*t_sampled);        离散采样值


% 3. SINC卷积插值

定义插值时间点(比原始采样点更密集)

interp_factor = 10;                        插值密度因子

t_interp = 0:1/(fs*interp_factor):T;       插值时间点

x_interp = zeros(size(t_interp));         初始化插值结果


对每个插值点计算SINC加权和[4](@ref)

for i = 1:length(t_interp)

    t_current = t_interp(i);

    

    计算当前时间点与所有采样点的SINC权值

    注意:MATLAB中的sinc函数定义为sinc(x) = sin(πx)/(πx)

    sinc_weights = sinc((t_current - t_sampled) * fs);

    

    计算插值点数值(离散采样值与对应SINC权值的点积)

    x_interp(i) = sum(x_sampled .* sinc_weights);

end


% 4. 结果可视化

figure('Position', [100, 100, 1200, 800]);


绘制原始连续信号

subplot(3,1,1);

plot(t_continuous, x_continuous, 'b-''LineWidth', 2);

hold on;

plot(t_sampled, x_sampled, 'r-''LineWidth', 2);

title('原始连续信号与离散采样点');

xlabel('时间 (s)'); ylabel('幅度');

legend('原始连续信号''离散采样点''Location''northeast');

grid on;


绘制插值结果与原始信号对比

subplot(3,1,2);

plot(t_continuous, x_continuous, 'b-''LineWidth', 1.5);

hold on;

plot(t_interp, x_interp, 'ro-''MarkerSize', 3, 'LineWidth', 1);

stem(t_sampled, x_sampled, 'k''filled''MarkerSize', 5);

title('SINC插值结果对比');

xlabel('时间 (s)'); ylabel('幅度');

legend('原始连续信号''SINC插值结果''离散采样点''Location''northeast');

grid on;


绘制插值误差

subplot(3,1,3);

在插值时间点处的原始连续信号值

x_continuous_at_interp = sin(2*pi*f0*t_interp);

error = x_interp - x_continuous_at_interp;

plot(t_interp, error, 'g-''LineWidth', 1.5);

title('插值误差 (插值结果 - 原始连续信号)');

xlabel('时间 (s)'); ylabel('误差');

grid on;


计算并显示均方根误差(RMSE)

rmse = sqrt(mean(error.^2));

fprintf('插值均方根误差(RMSE): %.6f\n', rmse);



上述代码框可上下滑动!

二、示波器应用

上述过程在哪儿可以直接应用呢?对,示波器!

作为时域测量的扛把子,泰克示波器产品线中,从入门级的TDS1000B 到高端的DPO70000系列,几乎所有数字示波器系列都支持Sinc插值功能。

30.png

图5 泰克示波器经济型示波器也支持Sinc插值

罗德与施瓦茨RTO6系列同时搭配线性插值、采样和保持这两种插值方式,用户可根据测量的信号类型灵活选择合适模式,适配不同场景下的波形还原需求。

1765972563412184.png

图6 R&S RTO6支持包括Sinc在内的多种插值方式





三、理想重建的局限性:为什么工程中不用“纯sinc”?

理想sinc插值在数学上完美,但无法直接工程实现,核心问题有两个:

  •  无限长特性:公式n取±∞,意味着重建一个点需要用到所有采样点(包括未来的采样点),这在物理上是“非因果”的(无法预测未来信号);

  •  收敛速度慢:sinc函数的尾部衰减速度为1/x,截断后会产生“吉布斯现象”(频谱旁瓣泄漏),导致重建信号出现微小失真。





四、工程化重建方案:sinc函数的“近似实现”

工程中所有无失真重建方案,本质都是理想sinc插值的近似,核心思路是“有限长截断+窗函数优化”,最常用的是有限长sinc-FIR滤波器,步骤如下:

  •  截断sinc函数:将无限长sinc函数截断为N个抽头(N为奇数,围绕n=0对称,如N=64、128),仅用附近N个采样点参与插值(因果性实现);

  •  窗函数加权:用汉明窗、汉宁窗或布莱克曼窗对截断后的sinc函数加权,抑制吉布斯现象(旁瓣泄漏),提升镜像抑制比;

  •  FIR滤波器实现:将加权后的有限长sinc序列作为FIR滤波器的脉冲响应,离散采样值通过该滤波器后,直接输出连续(或高采样率离散)的重建信号——这就是DAC、DUC中常用的“插值滤波一体”方案。





五、总结:重建方法的核心逻辑

奈奎斯特采样定理的“无失真重建”,其数学本质是sinc函数插值(理想低通滤波)——通过sinc函数的时域加权补全和平滑特性,以及频域的理想低通滤波特性,完美还原原始连续信号。

工程实践中,由于理想sinc函数无法实现,采用有限长sinc-FIR滤波器进行近似,本质是用“可实现的硬件结构”逼近“理想重建效果”。无论是DAC的信号重建、DUC的插值滤波,还是软件无线电(SDR)的信号恢复,其核心原理都源于此。

简言之奈奎斯特定理的“无失真”,是由sinc插值保证的;工程中的“高保真”,是sinc插值的工程化落地结果。下次再看见那个“张牙舞爪”的锯齿波,不要怀疑是不是亲生的啦,脑补一个sinc函数插值吧。

1765972671286461.png

关于祯仪

祯仪科技,专业从事宽频段无线电信号接收,适用于无线电管理、信号侦查与分析、通用频谱分析、卫星导航监测、低空复杂电磁环境感知等。

END





阅读

Recommend

  • QQ Zone

  • Sina Weibo

  • Renren.com

  • Douban

取消