0
我正在使用dsp庫和dsp.biquad
函數來實現butterworth IIR濾波器。當我創建過濾我設置的初始值,如下圖所示:dsp biquad filter使用初始值重置
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重置函數不允許我傳遞一個初始值,所以此刻我只是通過調用上述來重新創建過濾器。
但是,我認爲這可能有點慢。我沒有測量它,但它被頻繁地調用。任何人都可以提出一種方法來重置過濾器爲任意初始值?還是有另一個圖書館讓我這樣做?
嗨Navan,謝謝,很好的答案。用輸入作爲參數調用過濾器對象對我來說不起作用,但如果我用'step(lowpassIIR_minutes,value);替換那些'然後它就可以正常工作。另外,你是否打算改變初始值的分頻器? –
使用輸入數據調用過濾器對象是一種較新的語法。對於舊版本,您需要調用step method。我改變了初始值的分頻器,以顯示不同初始值的設置。 – Navan