IIR 滤波器的大 O 时间复杂度是多少?
What's the big O time-complexity of an IIR filter?
给定如下所示的 IIR 滤波器,它的 O(n?) 时间复杂度是多少?
我无法确定它是否为 O(n^2),因为要计算每个输出,您需要遍历所有先前的样本。但它也可能是 O(n),因为对于每个输出,您只需要 x 次计算(x 是 b 和 a 的大小),前提是您已经拥有所有先前的输出。
您不需要遍历每个样本,只需遍历最后 k 个样本,输入和输出都具有相应的时间滞后。
因此,如果您有一个二阶 IIR 滤波器,则会在分母中产生 2 个系数,在分母中产生 2 个系数(如果我们讨论的是传递函数)。因此,对于 k 阶滤波器,有(大约)2k 次乘法和加法。这是您要计算的输出的一个样本。
现在,您将滤波器应用于长度为 n 的信号,这意味着整体计算时间将随 k 和 n 线性上升,从而使完整复杂度为 O(k*n).
给定如下所示的 IIR 滤波器,它的 O(n?) 时间复杂度是多少?
我无法确定它是否为 O(n^2),因为要计算每个输出,您需要遍历所有先前的样本。但它也可能是 O(n),因为对于每个输出,您只需要 x 次计算(x 是 b 和 a 的大小),前提是您已经拥有所有先前的输出。
您不需要遍历每个样本,只需遍历最后 k 个样本,输入和输出都具有相应的时间滞后。 因此,如果您有一个二阶 IIR 滤波器,则会在分母中产生 2 个系数,在分母中产生 2 个系数(如果我们讨论的是传递函数)。因此,对于 k 阶滤波器,有(大约)2k 次乘法和加法。这是您要计算的输出的一个样本。 现在,您将滤波器应用于长度为 n 的信号,这意味着整体计算时间将随 k 和 n 线性上升,从而使完整复杂度为 O(k*n).