Computer Programming/Min-Max Normalisation
Appearance
SQL
[edit | edit source]SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGO--=============================================--Author:ColmRice--Description:Getsmin-maxnormalisedvalueofavariable--Bogstandardversion(baseduponalineareqnoftheform:Ax+B)--Transformsavalueintotherange[0,1]--Bulletproofchecks:--NB:Ifdivisionbyzeroreturning-1.0toalerttheuser!--Anynullsgoingdownarereplacedwithzero--=============================================ALTERFUNCTIONdbo.GetMinMaxNorm(@valueToBeNormaliseddecimal(10,2),@maxValuedecimal(10,2),@minValuedecimal(10,2))RETURNSdecimal(10,2)ASBEGINDECLARE@rangedecimal(10,2)DECLARE@resultdecimal(10,2)SET@range=ISNULL(@maxValue,0.0)-ISNULL(@minValue,0.0)if(@range=0)--Bulletproofreturn-1.0elseSET@result=(ISNULL(@valueToBeNormalised,0)-ISNULL(@minValue,0))/@rangereturn@resultENDGO
VB.Net
[edit | edit source]''' <summary>''' Gets the min-max normalised value of a variable''' Bog standard version (based upon a linear eqn)''' </summary>''' <param name="value">Value to be tranformed</param>''' <param name="maxValue">Max value of variable set</param>''' <param name="minValue">Min value of variable set</param>''' <returns>Normalised value in the range [0,1]</returns>''' <remarks>Division by zero check. Returns NaN to alert user!</remarks>PublicFunctionGetMinMaxNorm(ByValvalueAsDouble,ByValmaxValueAsDouble,ByValminValueAsDouble)AsDoubleDimrangeAsDoublerange=maxValue-minValueIf(range=0)Then'BulletproofReturnDouble.NaNElseReturn((value-minValue)/range)EndIfEndFunction
C#
[edit | edit source]/// <summary>/// Gets the min-max normalised value of a variable/// Bog standard version (based up on a linear eqn)/// NB: Division by zero return NaN to alert user/// </summary>/// <param name="value">Value to be transformed</param>/// <param name="minValue">Min value over the variable set</param>/// <param name="maxValue">Max value of the variable set</param>/// <returns>Value in the range [0,1]</returns>publicdoubleGetMinMaxNorm(doublevalue,doublemaxValue,doubleminValue){doublerange=maxValue-minValue;if(range==0)//Bulletproofingreturndouble.NaN;elsereturn(value-minValue)/range;}