gpt4 book ai didi

matlab - 先前的输出作为 FIR 滤波器的输入

转载 作者:行者123 更新时间:2023-12-02 06:55:00 27 4
gpt4 key购买 nike

有谁知道是否可以将以前的输出值传递给 Matlab 中的 FIR 滤波器?我想这样做是因为我有大量数据(> 300Gb),我想对其进行过滤和下采样。如果我在 FIR 函数中使用标准的 [b,a] 系数集,那么前几个样本将不正确,因为它们取决于初始条件。

这是问题所在,因为我想通过获取较小的数据 block 来过滤我的大数据集,但如果我使用标准方式执行此操作,那么在每个数据 block 的开头都会出现错误(这将由于以下原因而传播)它是一个 FIR 滤波器)。

任何想法将不胜感激!

最佳答案

filter 命令可以将初始条件作为输入,并返回最终条件作为第二个输出。您需要使用它们来过滤较小的数据 block 。例如,

b = fir1(10, 0.5);
Zi = zeros(numel(b)-1,1);
while moreData
[y Zi] = filter(b, 1, data, Zi);
end

如果您有 DSP 系统工具箱,您还可以使用 dsp.DigitalFilter 系统对象来管理状态。例如上面的代码可以变成

b = fir1(10, 0.5);
h = dsp.DigitalFilter('TransferFunction', 'FIR (all zeros)', 'Structure', 'Direct form transposed', 'Numerator', b);
while moreData
y = step(h, data);
end

关于matlab - 先前的输出作为 FIR 滤波器的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6228243/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com