package org.signalml.domain.signal.export.eeglab;
import java.io.File;
import java.io.IOException;
import org.signalml.app.model.signal.SignalExportDescriptor;
import org.signalml.domain.signal.SignalWriterMonitor;
import org.signalml.domain.signal.export.ISignalWriter;
import org.signalml.domain.signal.samplesource.MultichannelSampleSource;
import org.signalml.util.matfiles.CompressedMatlabFileWriter;
import org.signalml.util.matfiles.MatlabFileWriter;
import org.signalml.util.matfiles.array.lazy.LazyExportDoubleArray;
/**
* Exports signal to MATLAB MAT-file.
*
* @author Piotr Szachewicz
*/
public class MatlabSignalWriter implements ISignalWriter {
public void writeSignal(File output, MultichannelSampleSource sampleSource, SignalExportDescriptor descriptor, SignalWriterMonitor monitor) throws IOException {
LazySampleProvider lazySampleProvider = new LazySampleProvider(sampleSource);
lazySampleProvider.setSignalWriterMonitor(monitor);
LazyExportDoubleArray lazyExportDoubleArray = new LazyExportDoubleArray("data", lazySampleProvider);
MatlabFileWriter writer = new CompressedMatlabFileWriter(output);
writer.addElement(lazyExportDoubleArray);
writer.write();
if (monitor != null) {
monitor.setProcessedSampleCount(sampleSource.getSampleCount(0));
}
}
}