This software provides a comprehensive environment for designing and simulating Bessel filters of various types (Low-pass, High-pass, Band-pass, Band-stop) in both analog and digital domains. The application features graphical visualization of filter characteristics including magnitude/phase responses, pole-zero plots, and time-domain responses.
- Supports 4 filter types: Low-pass, High-pass, Band-pass, Band-stop
- Works in both analog and digital domains
- Automatic order determination or manual specification
- Visualizations:
- Magnitude response (linear/dB scale)
- Phase response and group delay
- Pole-zero plots with unit circle for digital filters
- Step and impulse responses
- Multiple coefficient representations:
- Transfer function
- State-space
- Second-order sections (SOS)
The software uses Bessel polynomials to design the analog low-pass prototype. The recursive formula for Bessel polynomials is:
B₀(s) = 1
B₁(s) = s + 1
Bₙ(s) = (2n-1)Bₙ₋₁(s) + s²Bₙ₋₂(s)
- Low-pass Prototype Normalization:
- Poles are scaled to achieve unity cutoff frequency:
s → s/ωc
- Poles are scaled to achieve unity cutoff frequency:
- Frequency Transformations:
- Low-pass to High-pass:
s → ωc/s
- Low-pass to Band-pass:
s → (s² + ω0²)/(Bs)
- Low-pass to Band-stop:
s → Bs/(s² + ω0²)
where ω0 is center frequency and B is bandwidth
- Low-pass to High-pass:
- Bilinear Transform (Analog to Digital):
s → (2/T)(z-1)/(z+1)
where T is sampling period
- Poles are roots of the Bessel polynomial
- Zeros are determined by filter type:
- Low-pass: No finite zeros
- High-pass: Multiple zeros at origin
- Band-pass: Complex conjugate zeros at center frequency
- Band-stop: Zeros at origin and complex frequencies
- Magnitude Response:
|H(jω)| = 1/|D(jω)|
whereD(jω)
is denominator polynomial evaluated ats=jω
- Phase Response:
φ(ω) = -arg(D(jω))
(in degrees) - Group Delay:
τ(ω) = -dφ/dω ≈ -Δφ/Δω
(numerical differentiation) - Time Domain Responses:
- Step response: Output when input
u(t) = 1
- Impulse response: Output when input
δ(t) = 1
att=0
- Step response: Output when input