ContinuousWaveletProvider.java
package com.morphiqlabs.wavelet.cwt.providers;
import com.morphiqlabs.wavelet.api.Wavelet;
import com.morphiqlabs.wavelet.api.WaveletProvider;
import com.morphiqlabs.wavelet.cwt.GaussianDerivativeWavelet;
import com.morphiqlabs.wavelet.cwt.MorletWavelet;
import java.util.List;
/**
* Provider for continuous wavelets in the VectorWave library.
*
* <p>This provider registers continuous wavelets that are defined by mathematical
* functions rather than discrete filter coefficients. These wavelets are particularly
* useful for time-frequency analysis, signal decomposition, and feature extraction.</p>
*
* <p>Wavelets provided:</p>
* <ul>
* <li><strong>Morlet wavelet</strong> - Complex-valued wavelet providing excellent
* time-frequency localization. Ideal for analyzing oscillatory signals and
* extracting instantaneous frequency information.</li>
* <li><strong>Gaussian derivative wavelets (DOG1-DOG4)</strong> - Real-valued wavelets
* based on derivatives of the Gaussian function. Higher orders detect increasingly
* complex features in signals.</li>
* </ul>
*
* <p>These wavelets are automatically discovered by the ServiceLoader mechanism
* and registered with the WaveletRegistry on application startup.</p>
*
* @see WaveletProvider
* @see com.morphiqlabs.wavelet.api.ContinuousWavelet
* @see MorletWavelet
* @see GaussianDerivativeWavelet
* @see com.morphiqlabs.wavelet.api.WaveletRegistry
*/
public class ContinuousWaveletProvider implements WaveletProvider {
@Override
public List<Wavelet> getWavelets() {
return List.of(
new MorletWavelet(),
new GaussianDerivativeWavelet(1),
new GaussianDerivativeWavelet(2),
new GaussianDerivativeWavelet(3),
new GaussianDerivativeWavelet(4)
);
}
}