在MATLAB中提取滤波期间**任意**位置的IIR滤波器状态

在MATLAB中提取滤波期间**任意**位置的IIR滤波器状态,matlab,signals,filtering,signal-processing,Matlab,Signals,Filtering,Signal Processing,当我们想在MATLAB中使用IIR滤波器对信号进行滤波时,我们可以简单地将IIR滤波器结构与信号一起传递到filter命令中,以获得滤波信号,如下所示: filteredSig = filter(iirFilterStruct, signal); 假设我们想先过滤一半信号,然后过滤另一半信号,在这种情况下,我们打开iirFilterStruct的“持久内存”标志,并可以执行以下操作: iirFilterStruct.PersistentMemory = 1; filteredSigFirstH

当我们想在MATLAB中使用IIR滤波器对信号进行滤波时,我们可以简单地将IIR滤波器结构与信号一起传递到filter命令中,以获得滤波信号,如下所示:

filteredSig = filter(iirFilterStruct, signal);
假设我们想先过滤一半信号,然后过滤另一半信号,在这种情况下,我们打开iirFilterStruct的“持久内存”标志,并可以执行以下操作:

iirFilterStruct.PersistentMemory = 1;
filteredSigFirstHalf = filter(iirFilterStruct, signal(1:Nsignal/2))
filteredSigSecondHalf = filter(iirFilterStruct, signal((Nsignal/2)+1:end)
这将给我们同样的结果

我的问题:我希望能够在过滤操作期间在任意位置提取过滤状态。例如,假设我们正在过滤完整的信号。在位置Nsignal/3,我想保存IIR过滤器状态,然后稍后使用该状态

我该怎么做呢?

我假设“iirFilterStruct”指的是MATLAB中的过滤器对象。如果您正在使用具有PersistentMemory的filter对象,那么它还有一个名为GetState的方法,该方法将返回筛选器的当前状态。您必须调用filter方法,最多调用要保存状态的样本数,然后调用getstates(iirFilterStruct)来获取状态