Day*_*mer 4 matlab filtering signal-processing
我知道,为了过滤块中的大量数据,可以使用具有适当过滤系数的函数“filter”,并将最终条件“zf”传递到下一个块作为其初始条件“zi”。
我很困惑。“zf”的具体内容是什么?
它是否保存最后的相关输入样本?(在纯 FIR 滤波器中)最后的相关输出样本?(在 IIR 中)当最后的输入和最后的输出都相关时,它保持什么?
多谢
如果我们有大量数据或者内存不足,zf和zi选项将会派上用场。
例如,我们可以将数据分为两部分x和newx,并使用filter如下函数:
[y,zf] = filter(b,a,x);
newy = filter(b,a,newx,zf); 
a对于带有和的过滤器b,

我们将回顾 的length(a) -1样本y和length(b) -1的样本x。
因此,为了在下半场继续进行过滤,我们将需要max(length(a),length(b)) -1上半场的电话。
y[n] = x[n] + 2 * x[n-1] + 3 * x[n-2];
即
a = 1;
b = [1 2 3];
输入和输出的示例是,
x = [1     2     3     4     5     6     7     8     9];
y = [1     4    10    16    22    28    34    40    46];
zf = [42  27]';
newx对于我们的前两个样本,在 上实现过滤器,
newy[1] = newx[1] + 2*9 + 3*8 = newx[1] + 42 = newx[1] + zf[1];
newy[2] = newx[2] + 2 * newx[1] + 3*9 = newx[2] + 2 * newx[1] + zf[2];
x = 1 : 9;
b = [1 1 1];
a = [1 2];
[y,zf] = filter(b,a,x);
这对应于y[n] = x[n] + x[n-1] + x[n-2] - 2*y[n-1].
输入和输出是:
 x = [1     2     3     4     5     6     7     8     9];
 y = [1     1     4     1    10    -5    28   -35    94];
 zf = [-171 9]';
现在来看下半部分的第一个值:
newy[1] = newx[1] + 9 + 8 - 2 * 94 = newx[1] - 171 = newx[1] + zf(1);
newy[2] = newx[2] + newx[1] + 9 - 2*newy[1] = newx[2] + newx[1] + zf(2) - 2*newy[1];
所以我认为现在很明显,它是如何zf运作的。