Summary: | Butterworth filters are miss-named. | ||
---|---|---|---|
Product: | [Applications] kst | Reporter: | Netterfield <netterfield> |
Component: | general | Assignee: | kst |
Status: | RESOLVED FIXED | ||
Severity: | normal | ||
Priority: | NOR | ||
Version: | 1.x | ||
Target Milestone: | --- | ||
Platform: | unspecified | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
Netterfield
2004-08-18 18:11:40 UTC
Hi Barth, As I understand it (and its quite possible I don't) a Butterworth lowpass filter is defined by: H = 1/(1+(D+D_0)^2n), where D_0 is the cutoff frequency and n the order. (Such a filter is preferable to a rectangular response function in the frequency domain as it prevents some unpleasent side-effects like ringing). It is possible to generate causal code (such as given in the website you link to) to approximate a Butterworth filter. This is desirable for situations where you don't want to store all the preceeding values; of particular importance in linear circuits. I think what we have is a Butterworth filter. If it isn't why would we refer to it (as you suggest) as a '0 phase butterworth' in the description. It appears to be at best ambiguous. Common usage historically has referred to Butterworth filters as including the phase shift, but some sources do not mention this. Consequently, I suggest that we use the unambiguous terminology "0 phase butterworth" in the description, so user's won't be expecting the phase shifts. I suggest: Plugin Name: Filter Low Pass Description: Zero phase Butterworth ---- Input Vector - Y: C1-GYRO1 (ie, not "X-Array") Input Scalar - Order: [ ] Input Scalar - Cutoff Freq/Samp Rate [ ] (ie, not "Cutoff Frequency") ---- Output Vector - Filtered [ ] (ie, not "X Filtered") and similar for the other filters.... CVS commit by arwalker: Refer only to a zero phase Butterworth. Changed various names and descriptions. CCMAIL: 87446-done@bugs.kde.org M +3 -3 butterworth_bandpass/butterworth_bandpass.cpp 1.4 M +7 -7 butterworth_bandpass/butterworth_bandpass.xml 1.6 M +2 -2 butterworth_bandstop/butterworth_bandstop.cpp 1.4 M +7 -7 butterworth_bandstop/butterworth_bandstop.xml 1.6 M +2 -2 butterworth_highpass/butterworth_highpass.cpp 1.5 M +6 -6 butterworth_highpass/butterworth_highpass.xml 1.5 M +2 -2 butterworth_lowpass/butterworth_lowpass.cpp 1.3 M +6 -6 butterworth_lowpass/butterworth_lowpass.xml 1.5 |