#include "tim/core/differential_entropy.h"
#include "tim/core/signal_tools.h"
#include <pastel/sys/iterator/null_iterator.h>
#include <pastel/math/normbijection.h>
using namespace Tim;
namespace
{
void useCase()
{
SignalData xSignal = generateGaussian(3, 10000);
SignalData ySignal = generateGaussian(5, 10000);
Signal signalSet[2] = {xSignal, ySignal};
const integer timeWindowRadius = 10;
const integer kNearest = 1;
dreal averageEstimate = 0;
Euclidean_Norm<dreal> norm;
// To compute differential entropy for
// a single signal:
averageEstimate = differentialEntropyKl(
constantRange(xSignal));
averageEstimate = differentialEntropyKl(
constantRange(xSignal));
averageEstimate = differentialEntropyKl(
constantRange(xSignal), kNearest);
// To compute temporal differential
// entropy where the neighborhood is given by
// a time-window:
temporalDifferentialEntropyKl(
constantRange(xSignal), timeWindowRadius,
kNearest, norm);
averageEstimate = differentialEntropyKl(
constantRange(xSignal), kNearest, norm);
temporalDifferentialEntropyKl(
constantRange(xSignal), timeWindowRadius,
kNearest);
temporalDifferentialEntropyKl(
constantRange(xSignal), timeWindowRadius,
kNearest, norm);
// To compute differential entropy for
// a set of signals, where each signal is a
// different trial of the same experiment:
averageEstimate = differentialEntropyKl(
range(signalSet));
averageEstimate = differentialEntropyKl(
range(signalSet));
averageEstimate = differentialEntropyKl(
range(signalSet), kNearest);
averageEstimate = differentialEntropyKl(
range(signalSet),
kNearest, norm);
// To compute temporal differential entropy for
// a set of signals, where each signal is a
// different trial of the same experiment:
temporalDifferentialEntropyKl(
range(signalSet),
timeWindowRadius);
temporalDifferentialEntropyKl(
range(signalSet),
timeWindowRadius);
temporalDifferentialEntropyKl(
range(signalSet),
timeWindowRadius,
kNearest);
temporalDifferentialEntropyKl(
range(signalSet), timeWindowRadius,
kNearest,
norm);
}
}