【发布时间】:2017-05-03 14:14:01
【问题描述】:
我正在使用 dsp 库和 dsp.biquad 函数来实现 Butterworth IIR 滤波器。我在创建过滤器时设置了一个初始值,如下所示:
function [lowpassIIR_minutes] = createLowpassIIR_minutes(initialValue)
% The following code was used to design the filter coefficients:
%
% N = 1; % Order
% F3dB = 8.67e-05; % 3-dB Frequency
% Fs = 1; % Sampling Frequency
%
% h = fdesign.lowpass('n,f3db', N, F3dB, Fs);
%
% Hd = design(h, 'butter', ...
% 'SystemObject', true);
lowpassIIR_minutes = dsp.BiquadFilter( ...
'Structure', 'Direct form II', ...
'SOSMatrix', [1 1 0 1 -0.999455396157461 0], ...
'ScaleValues', [0.00027230192126942; 1],...
'InitialConditions', initialValue./2);
我想定期重置过滤器,当我这样做时,初始值会有所不同。 biquad 重置函数不允许我传递初始值,所以目前我只是通过调用上面的方法重新创建过滤器。
但是,我认为这可能有点慢。我没有测量它,但它被频繁调用。谁能建议一种将过滤器重置为任意初始值的方法?还是有其他图书馆可以让我这样做?
【问题讨论】:
标签: matlab filter signal-processing