dsp 라이브러리와 dsp.biquad
함수를 사용하여 버터 워스 IIR 필터를 구현했습니다. 나는 필터를 만들 때 다음과 같이 나는 초기 값을 설정하고 있습니다 :dsp 바이 쿼드 필터가 초기 값으로 재설정되었습니다.
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);
나는 정기적으로 필터를 재설정 할 내가 할 때, 초기 값이 다를 수 있습니다. 바이 쿼드 리셋 함수는 초기 값을 전달할 수 없기 때문에 위의 함수를 호출하여 필터를 다시 생성합니다.
그러나 이것은 다소 느릴 수 있습니다. 나는 그것을 측정하지는 않았지만 그것은 꽤 자주 불린다. 누구든지 필터를 임의의 초기 값으로 재설정하는 방법을 제안 할 수 있습니까? 아니면 내가 할 수있게 해주는 다른 도서관이 있습니까?
안녕하세요 Navan, 좋은 답변입니다. 입력을 매개 변수로 사용하여 필터 객체를 호출하는 것은 저에게는 효과적이지 않지만이를 'step (lowpassIIR_minutes, value);로 대체하면 올바르게 작동합니다. 또한 초기 값에서 분배자를 변경하려고합니까? –
입력 데이터가있는 필터 개체를 호출하는 것이 더 새로운 구문입니다. 이전 버전의 경우 step 메소드를 호출해야합니다. 나는 다른 초기 값의 설정을 보여주기 위해 초기 값으로 디바이더를 변경했다. – Navan