Нормализованная частота среза равна
Wn = fc/(fs/2)
, где fc
- требуемая частота среза, а fs
- частота дискретизации. 2 имеет отношение к теореме Найквиста-Шеннона , но я не хочу путаницы. Обратите внимание, что фильтр никогда не бывает резким . Так что на самом деле он не обрезается при fc
, но затухает на более высоких частотах.
Чтобы реально контролировать степень резкости фильтра, я рекомендую проектировать фильтр напрямую: например, butter
дает вам фильтр Баттерворта (или фильтр Бесселя - менее резкий, чем Баттерворта , но также лучше усиление при < fc
, или Чебышева фильтр, который намного резче, но вносит колебания в усиление при < fc
). По моему опыту, обычно применяется фильтр 4-го порядка Баттерворта .
[b,a] = butter(4,Wn);
sig_flt = filter(b,a,sig);
РЕДАКТИРОВАТЬ: На самом деле рекомендуется использовать (как указал @LuisMendo )
[z,p,k] = butter(4,Wn);
sos = zp2sos(z,p,k); % convert to zero-pole-gain filter parameter
sig_flt = sosfilt(sos,sig);
, чтобы избежать числовых ошибок:
В общем случае используйте синтаксис [z, p, k] для разработки фильтров БИХ.
( Чебышев также является БИХ-фильтром)