package pl.edu.fuw.fid.signalanalysis.wavelet; import org.apache.commons.math.complex.Complex; import pl.edu.fuw.fid.signalanalysis.waveform.Waveform; /** * Base class for wavelet waveforms. * * @author ptr@mimuw.edu.pl */ public abstract class MotherWavelet implements Waveform { @Override abstract public double getHalfWidth(); abstract public String getLabel(); abstract public double getBasicFrequency(); @Override abstract public Complex value(double t); public Waveform scale(final double f) { return new Waveform() { @Override public double getHalfWidth() { return MotherWavelet.this.getHalfWidth() / f; } @Override public Complex value(double t) { double relative = f / getBasicFrequency(); return MotherWavelet.this.value(t * relative).multiply(Math.sqrt(relative)); } }; } }