package org.signalml.domain.signal.filter.export;
import static org.signalml.SignalMLAssert.assertArrayEquals;
import java.io.IOException;
import org.junit.Test;
import org.signalml.domain.montage.filter.TimeDomainSampleFilter;
import org.signalml.domain.signal.filter.TestingSignals;
import org.signalml.domain.signal.filter.iir.OfflineIIRSinglechannelSampleFilter;
import org.signalml.domain.signal.samplesource.ChannelSelectorSampleSource;
import org.signalml.domain.signal.samplesource.DoubleArraySampleSource;
import org.signalml.math.iirdesigner.ApproximationFunctionType;
import org.signalml.math.iirdesigner.BadFilterParametersException;
import org.signalml.math.iirdesigner.FilterType;
import org.signalml.math.iirdesigner.IIRDesigner;
public class IIRMultichannelSingleFilterForExportTest {
@Test
public void testGetSamples() throws BadFilterParametersException, IOException {
TimeDomainSampleFilter timeDomainFilter = new TimeDomainSampleFilter(FilterType.HIGHPASS,
ApproximationFunctionType.BUTTERWORTH,
new double[] {5.0, 0.0}, new double[] {1.5, 0.0}, 3.0, 10.00);
timeDomainFilter.setSamplingFrequency(128.0);
double[][] signal = new double[1][];
signal[0] = TestingSignals.SHORT_SIGNAL;
DoubleArraySampleSource sampleSource = new DoubleArraySampleSource(signal, 1, signal[0].length);
IIRMultichannelSingleFilterForExport filterForExport = new IIRMultichannelSingleFilterForExport(sampleSource, timeDomainFilter, new boolean[] { false}, false, null);
//export
double[] exportResults = new double[filterForExport.getSampleCount(0)];
filterForExport.getSamples(0, exportResults, 0, exportResults.length, 0);
//offline
ChannelSelectorSampleSource channel0SampleSource = new ChannelSelectorSampleSource(sampleSource, 0);
OfflineIIRSinglechannelSampleFilter offlineFilter = new OfflineIIRSinglechannelSampleFilter(channel0SampleSource, IIRDesigner.designDigitalFilter(timeDomainFilter));
double[] offlineResults = new double[offlineFilter.getSampleCount()];
offlineFilter.getSamples(offlineResults, 0, offlineResults.length, 0);
assertArrayEquals(offlineResults, exportResults, 1e-4);
}
}