public class MelFilter extends java.lang.Object
MelFrequencyFilterBankcreates mel-filters and filters spectrum data.
A mel-filter is a triangular shaped bandpass filter. When a mel-filter is constructed, the parameters
deltaFreq are given to the
Constructor. The first three arguments to the constructor,
centerFreq, specify the filter's slopes. The
total area under the filter is 1. The filter is shaped as a triangle. Knowing the distance between the center
frequency and each of the edges, it is easy to compute the slopes of the two sides in the triangle - the third side
being the frequency axis. The last two arguments,
deltaFreq, identify the
first frequency bin that falls inside this filter and the spacing between successive frequency bins. All frequencies
here are considered in a linear scale.
Figure 1 below shows pictorially what the other parameters mean.
|Constructor and Description|
Constructs a filter from the parameters.
|Modifier and Type||Method and Description|
Compute the output of a filter.
public MelFilter(double leftEdge, double centerFreq, double rightEdge, double initialFreq, double deltaFreq) throws java.lang.IllegalArgumentException
In the current implementation, the filter is a bandpass filter with a triangular shape. We're given the left and right edges and the center frequency, so we can determine the right and left slopes, which could be not only asymmetric but completely different. We're also given the initial frequency, which may or may not coincide with the left edge, and the frequency step.
leftEdge- the filter's lowest passing frequency
centerFreq- the filter's center frequency
rightEdge- the filter's highest passing frequency
initialFreq- the first frequency bin in the pass band
deltaFreq- the step in the frequency axis between frequency bins
java.lang.IllegalArgumentException- if input is invalid
public double filterOutput(double spectrum)
spectrum- the input power spectrum to be filtered