我正在用我的声卡做一些测量,我有一个输出通道连接到一个输入通道。
然后我向声卡发送一个单位脉冲,即信号 1 值后跟零。
记录的响应如下所示。
我知道 Rect 函数或 LPF 的傅里叶变换将产生一个 Sinc 函数——这似乎是下面的响应。但我不太确定响应中预响的原因。
我正在用我的声卡做一些测量,我有一个输出通道连接到一个输入通道。
然后我向声卡发送一个单位脉冲,即信号 1 值后跟零。
记录的响应如下所示。
我知道 Rect 函数或 LPF 的傅里叶变换将产生一个 Sinc 函数——这似乎是下面的响应。但我不太确定响应中预响的原因。
在声卡模拟输入和您正在绘制的样本之间的链中的某个地方,肯定有一个低通滤波器。ADC 之前可能有一个模拟抗混叠滤波器;此外,在重新采样过程中,可能会在卡上或操作系统的音频驱动程序堆栈中应用一个或多个低通滤波器(导致以您请求的采样率生成样本流)。
如您所述,低通滤波器通常具有类似于函数的脉冲响应。当您用脉冲激发线性系统时,产生的输出只是系统脉冲响应的副本(由于卷积定理)。因此,观察到的信号看起来像函数这一事实是可以预料的。这听起来也不会让你感到惊讶。
但是:您没有观察到非因果行为。如果你有,那么你应该立即跑到你当地的专利局。非因果系统在现实世界中是不可实现的。记住这个定义:为了使系统的响应是非因果的,它的输出必须及时领先于输入。换句话说,过滤器会在您输入输入之前开始输出其对输入的响应。显然,这不会发生。
那么预响是怎么回事呢?很简单:中间的大尖峰对应于滤波器脉冲响应的中心。但是,该尖峰不对应于,即脉冲插入滤波器的时间。考虑以下 MATLAB 示例:
% generate a 250th order lowpass filter
b = fir1(250, 0.5);
% plot its impulse response
plot(0:250, b); grid on;
结果图如下所示:
如您所见,图中的峰值不在样本索引为零处。该滤波器的总延迟为 125 个样本(实际上,所有线性相位 FIR 滤波器的体延迟为样本,其中是滤波器阶数),并且前振铃和后振铃为集中在那个延迟上。因此,当您插入脉冲时,您最初会看到很少的响应。当脉冲通过滤波器抽头时,振铃在脉冲响应的中心上升到峰值,然后下降到零。
要点:您给出的示例中没有非因果行为。在实践中可以通过添加足够的延迟来模拟非因果滤波器,类似于上面低通滤波器的脉冲响应中显示的延迟。
Sinc 函数表示线性相位“砖墙”低通滤波器的变换,峰值以时间 0 为中心。大多数物理低通滤波器与最小相位响应更相似,幅度响应不太完美/比 Sinc 急剧转变,并且在最小相位响应中的峰值在时间上偏移了一些物理传播延迟。