|
奈奎斯特说两倍多采样就可以还原信号,为什么采出来是锯齿波?Time:2025-12-17 奈奎斯特采样定理(奈奎斯特-香农定理)明确:若连续信号x(t)的最高频率(带宽)为Fc,且采样率Fs>2Fc,则信号可通过采样值无失真地重建原信号。对此,不管是真明白还是假明白,我们都深信不已。 但看着ADC采集的那一串数字信号,你有没有觉得它们不是原信号“亲生的”?比如,模拟世界中的原信号是漂亮又平滑的波形,采集出来的为什么是“张牙舞爪”的锯齿波,有没有种魔童转世的感觉? 图1 原始信号VS离散采样信号 若“温太医”拍着胸脯告诉您,这个数字信号就是原信号“亲生的”,那我们应该怎样来“脑补”这个数字信号?怎样科学地在我们脑中重建这个信号呢? 其实,锯齿波(连折线)我们直观而想当然的重建方法,奈奎斯特采样定理对应的信号重建方法是 sinc函数插值(理想低通滤波重建)——这是数学上唯一能实现“无失真还原”的方法,也是所有工程化重建方案的理论基础。 要理解重建方法,需先明确采样与重建的对应关系: 01 采样过程 本质是用“冲激串”对连续信号x(t)进行调制,得到离散采样值x(nTs) ( Ts=1/Fs为采样周期)。在频域上,采样会使原信号频谱以Fs为周期重复(形成“镜像频谱”),这一点我们在《奈奎斯特采样定理和带通采样定理是一回事吗?》中说了不少; 02 重建核心 需从离散采样值中“还原”原始连续频谱,关键是滤除所有镜像频谱,只保留基波频段(-Fc~Fc)——而能完美实现这一目标的,正是“理想低通滤波器”,其脉冲响应恰好是sinc函数,这一点,我们在《奇妙的sinc,从博通公司商标到雷达脉冲分析》中说了不少。
2.1 重建公式(采样定理的逆应用) 根据奈奎斯特-香农定理的逆定理,连续信号x(t)可由其采样值x(nTs)唯一重建,公式为: ![]() 其中:
这就是理想sinc插值公式。 2.2 为什么是sinc函数?——时域+频域的双重适配 sinc函数的独特气质,使其成为“无失真重建”的唯一选择,可从两个维度理解: (1)时域视角:采样点“锚定”,中间点“平滑补全”
![]() 而其他采样点对应的:
因此公式简化为:
即:原始采样点完全保留,不产生失真;
(2)频域视角:理想低通,精准滤除镜像 sinc函数的傅里叶变换是矩形窗(理想低通滤波器的频率响应): ![]() 这意味着:
![]() 图3 Sinc函数时频关系对应示例 2.3 直观示例:正弦信号的sinc插值重建 一、matlab示例: 对一个2Hz正弦波,用5Hz采样,对比采样后的波形与原始波形,然后再用sinc函数插值,重建波形,再对比插值后的波形与原始波形:
图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插值功能。 ![]() 图5 泰克示波器经济型示波器也支持Sinc插值 罗德与施瓦茨RTO6系列同时搭配线性插值、采样和保持这两种插值方式,用户可根据测量的信号类型灵活选择合适模式,适配不同场景下的波形还原需求。 ![]() 图6 R&S RTO6支持包括Sinc在内的多种插值方式 理想sinc插值在数学上完美,但无法直接工程实现,核心问题有两个:
工程中所有无失真重建方案,本质都是理想sinc插值的近似,核心思路是“有限长截断+窗函数优化”,最常用的是有限长sinc-FIR滤波器,步骤如下:
奈奎斯特采样定理的“无失真重建”,其数学本质是sinc函数插值(理想低通滤波)——通过sinc函数的时域加权补全和平滑特性,以及频域的理想低通滤波特性,完美还原原始连续信号。 工程实践中,由于理想sinc函数无法实现,采用有限长sinc-FIR滤波器进行近似,本质是用“可实现的硬件结构”逼近“理想重建效果”。无论是DAC的信号重建、DUC的插值滤波,还是软件无线电(SDR)的信号恢复,其核心原理都源于此。 简言之:奈奎斯特定理的“无失真”,是由sinc插值保证的;工程中的“高保真”,是sinc插值的工程化落地结果。下次再看见那个“张牙舞爪”的锯齿波,不要怀疑是不是亲生的啦,脑补一个sinc函数插值吧。 ![]() 关于祯仪 祯仪科技,专业从事宽频段无线电信号接收,适用于无线电管理、信号侦查与分析、通用频谱分析、卫星导航监测、低空复杂电磁环境感知等。 |












