【问题标题】:Extract IIR filter state at **arbitrary** location during filtering, in MATLAB在 MATLAB 中,在滤波期间在**任意**位置提取 IIR 滤波器状态
【发布时间】:2014-01-25 07:49:08
【问题描述】:

当我们想在 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 滤波器状态,然后再使用该状态。

我该怎么做?

【问题讨论】:

    标签: matlab signals filtering signal-processing


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-26
      • 1970-01-01
      • 2013-12-05
      • 1970-01-01
      • 2016-07-30
      • 1970-01-01
      • 2012-04-06
      • 2014-10-27
      相关资源
      最近更新 更多