Class FilterDesignUtils

java.lang.Object
io.github.dkaukov.afsk.dsp.FilterDesignUtils

public final class FilterDesignUtils extends Object
FIR tap designers: Hamming LPF, Kaiser LPF/BPF, Root-Raised-Cosine (RRC). All designs return unity-gain normalized taps.
  • Method Summary

    Modifier and Type
    Method
    Description
    static double
    besselI0(double x)
    Zeroth-order modified Bessel function of the first kind (I0), series approx.
    static float[]
    designBandPassKaiser(int numTaps, float lowHz, float highHz, float sampleRate, float attenuationDb)
    Band-pass via difference of two low-passes (Kaiser window).
    static float[]
    designLowPassHamming(int numTaps, float cutoffHz, float sampleRate)
    Low-pass via windowed-sinc (Hamming). cutoffHz is 3dB point approx.
    static float[]
    designLowPassKaiser(int numTaps, float cutoffHz, float sampleRate, float attenuationDb)
    Low-pass via Kaiser window. attenuationDb controls sidelobes; 60–80dB good defaults.
    static float[]
    designRrc(int numTaps, float rolloff, float samplesPerSymbol)
    Root-Raised-Cosine (RRC) low-pass shaping filter. rolloff α in (0,1], taps must be odd.
    static double
    kaiserBeta(double attenuationDb)
    Kaiser window beta from desired stopband attenuation (dB).
    static void
    normalizeUnityGain(float[] taps)
    Normalize taps so DC gain ≈ 1.
    static float
    rrcSample(float t, float alpha)
    Single RRC tap value.

    Methods inherited from class java.lang.Object

    equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Method Details

    • designLowPassHamming

      public static float[] designLowPassHamming(int numTaps, float cutoffHz, float sampleRate)
      Low-pass via windowed-sinc (Hamming). cutoffHz is 3dB point approx.
    • designLowPassKaiser

      public static float[] designLowPassKaiser(int numTaps, float cutoffHz, float sampleRate, float attenuationDb)
      Low-pass via Kaiser window. attenuationDb controls sidelobes; 60–80dB good defaults.
    • designBandPassKaiser

      public static float[] designBandPassKaiser(int numTaps, float lowHz, float highHz, float sampleRate, float attenuationDb)
      Band-pass via difference of two low-passes (Kaiser window). Pass (lowHz..highHz).
    • designRrc

      public static float[] designRrc(int numTaps, float rolloff, float samplesPerSymbol)
      Root-Raised-Cosine (RRC) low-pass shaping filter. rolloff α in (0,1], taps must be odd.
    • rrcSample

      public static float rrcSample(float t, float alpha)
      Single RRC tap value.
    • normalizeUnityGain

      public static void normalizeUnityGain(float[] taps)
      Normalize taps so DC gain ≈ 1.
    • kaiserBeta

      public static double kaiserBeta(double attenuationDb)
      Kaiser window beta from desired stopband attenuation (dB).
    • besselI0

      public static double besselI0(double x)
      Zeroth-order modified Bessel function of the first kind (I0), series approx.