Browse Source

Use Delegate for histogram distance

pull/295/head
Mostafa Ali 11 years ago
parent
commit
70b1330253
  1. 29
      src/Numerics/Statistics/Histogram.cs

29
src/Numerics/Statistics/Histogram.cs

@ -469,31 +469,12 @@ namespace MathNet.Numerics.Statistics
}
/// <summary>
/// Calculate the Minkowski Distance between two histograms
/// Calculate the Distance between two histograms
/// </summary>
/// <param name="h">The histogram that will be compared with this histogram</param>
/// <param name="power">The power used for calculating the distance (e.g. 2 for Ecludian distance)</param>
/// <param name="distanceFunction">A delegate for the distance function</param>
/// <returns>The distance between the two histograms</returns>
public double MinkowskiDistance(Histogram h, int power)
{
if (this.BucketCount != h.BucketCount)
{
throw new ArgumentException("The two histograms must have the same number of buckets");
}
if (power < 1)
{
throw new ArgumentException("The power must be greater than zero");
}
double[] a1 = new double[this.BucketCount];
double[] a2 = new double[this.BucketCount];
for (int i = 0; i < this.BucketCount; i++)
{
a1[i] = this[i].Count;
a2[i] = h[i].Count;
}
return Distance.Minkowski(2, a1, a2);
}
public double HistogramDistance(Histogram h, double power, Func<double, double[], double[], double> distanceFunction){
if (this.BucketCount != h.BucketCount)
{
@ -509,6 +490,12 @@ namespace MathNet.Numerics.Statistics
return distanceFunction(power, a1, a2);
}
/// <summary>
/// Calculate the Distance between two histograms
/// </summary>
/// <param name="h">The histogram that will be compared with this histogram</param>
/// <param name="distanceFunction">A delegate for the distance function</param>
/// <returns>The distance between the two histograms</returns>
public double HistogramDistance(Histogram h, Func<double[], double[], double> distanceFunction)
{
if (this.BucketCount != h.BucketCount)

Loading…
Cancel
Save