@ContinuousIntegrationTest(estimatedDuration = 0.1)
@Test(timeout=300000)
public void testBandPassAttenuationForSinusoidalInput()
{
double inputFrequencyRadPerSec = 10.0;
double a = inputFrequencyRadPerSec / 5.0;
double b = inputFrequencyRadPerSec * 5.0;
double filterAttenuation = 1.0;
double properBandPassAttenuation;
FirstOrderBandPassFilteredYoVariable bandPassFilteredYoVariable = new FirstOrderBandPassFilteredYoVariable("sineWave", "", a, b, yoTime, registry);
while (filterAttenuation > 0.1 && a > 0.0 && b > 0.0)
{
bandPassFilteredYoVariable.setPassBand(a / (2.0*Math.PI), b / (2.0*Math.PI));
filterAttenuation = computeSteadyStateFilteredOutputAmplitude(yoTime, DT, inputFrequencyRadPerSec, bandPassFilteredYoVariable);
properBandPassAttenuation = computeProperBandPassAttenuation(inputFrequencyRadPerSec, a, b);
assertEquals(properBandPassAttenuation, filterAttenuation, 1e-2);
a -= 10.0;
b -= 10.0;
}
}