MATLAB 中的下采样 - 为什么缩放滤波器系数?

Downsampling in MATLAB - why scaling filter coefficients?

试图了解 MATLAB 如何进行重采样,查看 toolbox/signal/resample.m

这是计算低通FIR滤波器系数的部分:

  fc = 1/2/pqmax;
  L = 2*N*pqmax + 1;
  h = firls( L-1, [0 2*fc 2*fc 1], [1 1 0 0]).*kaiser(L,bta)' ;
  h = p*h/sum(h);

(这里pqmaxp都代表降采样率。)

不确定最后一行的目的是什么,其中所有滤波器系数都按 系数总和 p/sum(h) 的下采样率缩放?有谁知道背后的理论?

MATLAB firls
MATLAB kaiser
firls理论:Least Squared Error Design of FIR Filters

在大多数过滤器中,您希望输出幅度在过滤后保持相等,而不是放大或缩小。

从数学上讲,这通常在滤波器方程中正确完成,但在离散数字中这通常不适用。

如果将滤波器除以其总和,则确保对于任何输入数据 p,滤波器将始终具有 1 的通用比例因子,作为其标准化。对于p=ones(1:1000,1),如果sum(h)不是1,过滤后的结果会被缩放,即p_filtered的值不会是1