我正在尝试创建一个 0.1 Hz 到 50 Hz 范围内的带通滤波器。我正在使用 MATLAB 中的 filterbuilder 工具,因此它输出的代码如下所示:
function y = filter050(x)
persistent Hd;
if isempty(Hd)
Fstop1 = 0.1; % First Stopband Frequency
Fpass1 = 0.15; % First Passband Frequency
Fpass2 = 45; % Second Passband Frequency
Fstop2 = 50; % Second Stopband Frequency
Astop1 = 60; % First Stopband Attenuation (dB)
Apass = 1; % Passband Ripple (dB)
Astop2 = 60; % Second Stopband Attenuation (dB)
Fs = 500; % Sampling Frequency
h = fdesign.bandpass('fst1,fp1,fp2,fst2,ast1,ap,ast2', Fstop1, Fpass1, ...
Fpass2, Fstop2, Astop1, Apass, Astop2, Fs);
Hd = design(h, 'equiripple', ...
'MinOrder', 'any');
set(Hd,'PersistentMemory',true);
end
y = filter(Hd,x);
问题是它永远运行。我知道我的滤波器需要大量的点,因为它的频率很低,采样率为 500 Hz,但我真的不想对我的信号进行下采样......有什么办法吗?
此外,我尝试下采样以检查它是否会运行得更快,下采样到 100 Hz 并且仍然可以永远运行。