Package io.github.dkaukov.afsk.dsp
Class FilterDesignUtils
java.lang.Object
io.github.dkaukov.afsk.dsp.FilterDesignUtils
FIR tap designers: Hamming LPF, Kaiser LPF/BPF, Root-Raised-Cosine (RRC).
All designs return unity-gain normalized taps.
-
Method Summary
Modifier and TypeMethodDescriptionstatic doublebesselI0(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 doublekaiserBeta(double attenuationDb) Kaiser window beta from desired stopband attenuation (dB).static voidnormalizeUnityGain(float[] taps) Normalize taps so DC gain ≈ 1.static floatrrcSample(float t, float alpha) Single RRC tap value.
-
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.
-