我正在嘗試在0.1 Hz至50 Hz範圍內創建一個帶通濾波器。我使用從MATLAB的filterbuilder工具,因此它輸出的代碼如下所示:極低頻濾波器MATLAB
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赫茲,但我真的不想降低我的信號的採樣率......有沒有辦法解決它?
另外,我想下采樣,以檢查它是否會跑得更快,下采樣到100赫茲和仍然運行,直到永遠。
「問題是,這會永遠運行。」但是在「永遠」之後的某個時間你會得到一個輸出嗎?還是真的永遠永遠「永遠」? – thewaywewalk
也許你問得太多了,過濾器的尺寸變得非常長,或者會遇到數值問題。 –
@thewaywewalk那麼,它跑了大約1天直,然後我就放棄了,因爲這不是我的問題很好的解決... 編輯:間苗版本在一兩分鐘的運行,我會說10左右,這是不是太糟糕了,但我真的想用整個數據... –