From 1db8a2ac63a2e56914ba007a7fe87a5c3eb35d05 Mon Sep 17 00:00:00 2001 From: Joseph Lizier Date: Fri, 17 May 2019 22:47:16 +1000 Subject: [PATCH] Making local computation for CMI Gaussian calculator store the lastAverage if it was called with the previous observations --- ...tualInfoCalculatorMultiVariateGaussian.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/java/source/infodynamics/measures/continuous/gaussian/ConditionalMutualInfoCalculatorMultiVariateGaussian.java b/java/source/infodynamics/measures/continuous/gaussian/ConditionalMutualInfoCalculatorMultiVariateGaussian.java index 0dc933e..9ec26fd 100755 --- a/java/source/infodynamics/measures/continuous/gaussian/ConditionalMutualInfoCalculatorMultiVariateGaussian.java +++ b/java/source/infodynamics/measures/continuous/gaussian/ConditionalMutualInfoCalculatorMultiVariateGaussian.java @@ -737,6 +737,10 @@ public class ConditionalMutualInfoCalculatorMultiVariateGaussian double[] localValues = new double[lengthOfReturnArray]; + if (isPreviousObservations) { + lastAverage = 0; + } + for (int t = 0; t < newVar2Obs.length; t++) { double[] var1DeviationsFromMean = @@ -813,12 +817,18 @@ public class ConditionalMutualInfoCalculatorMultiVariateGaussian localValues[t] -= analyticMeasDist.getMeanOfUncorrectedDistribution(); } + if (isPreviousObservations) { + lastAverage += localValues[t]; + } } - // if (isPreviousObservations) { - // Don't store the average value here, since it won't be exactly - // the same as what would have been computed under the analytic expression - // } + if (isPreviousObservations) { + // Originally we didn't store the average value here, worrying that it wouldn't be exactly + // the same as what would have been computed under the analytic expression; + // however it should be, any difference is only numerical + lastAverage /= (double) newVar2Obs.length; + condMiComputed = true; + } return localValues; }