Beispiel #1
0
        /// <summary>
        /// Construct a 1d neighborhood function.
        /// </summary>
        /// <param name="type">The RBF type to use.</param>
        public NeighborhoodRBF1D(RBFEnum type)
        {
            switch (type)
            {
            case RBFEnum.Gaussian:
                _radial = new GaussianFunction(1, _params, 0);
                break;

            case RBFEnum.InverseMultiquadric:
                _radial = new InverseMultiquadricFunction(1, _params, 0);
                break;

            case RBFEnum.Multiquadric:
                _radial = new MultiquadricFunction(1, _params, 0);
                break;

            case RBFEnum.MexicanHat:
                _radial = new MexicanHatFunction(1, _params, 0);
                break;

            default:
                throw new AIFHError("Unknown RBF type: " + type.ToString());
            }

            _radial.Width = 1.0;
        }
Beispiel #2
0
        /// <summary>
        ///     Construct a 2d neighborhood function based on the sizes for the
        ///     x and y dimensions.
        /// </summary>
        /// <param name="type">The RBF type to use.</param>
        /// <param name="x">The size of the x-dimension.</param>
        /// <param name="y">The size of the y-dimension.</param>
        public NeighborhoodRBF(RBFEnum type, int x, int y)
        {
            var size = new int[2];

            size[0] = x;
            size[1] = y;

            _params = new double[3];

            switch (type)
            {
            case RBFEnum.Gaussian:
                _rbf = new GaussianFunction(2, _params, 0);
                break;

            case RBFEnum.InverseMultiquadric:
                _rbf = new InverseMultiquadricFunction(2, _params, 0);
                break;

            case RBFEnum.Multiquadric:
                _rbf = new MultiquadricFunction(2, _params, 0);
                break;

            case RBFEnum.MexicanHat:
                _rbf = new MexicanHatFunction(2, _params, 0);
                break;
            }

            _rbf.Width = 1;

            _size = size;

            CalculateDisplacement();
        }
Beispiel #3
0
        /// <summary>
        ///     Construct a multi-dimensional neighborhood function.
        /// </summary>
        /// <param name="size">The sizes of each dimension.</param>
        /// <param name="type">The RBF type to use.</param>
        public NeighborhoodRBF(int[] size, RBFEnum type)
        {
            _params = new double[size.Length];

            switch (type)
            {
            case RBFEnum.Gaussian:
                _rbf = new GaussianFunction(size.Length, _params, 0);
                break;

            case RBFEnum.InverseMultiquadric:
                _rbf = new InverseMultiquadricFunction(size.Length, _params, 0);
                break;

            case RBFEnum.Multiquadric:
                _rbf = new MultiquadricFunction(size.Length, _params, 0);
                break;

            case RBFEnum.MexicanHat:
                _rbf = new MexicanHatFunction(size.Length, _params, 0);
                break;
            }
            _size = size;
            CalculateDisplacement();
        }
Beispiel #4
0
        /// <summary>
        ///     Construct a 2d neighborhood function based on the sizes for the
        ///     x and y dimensions.
        /// </summary>
        /// <param name="type">The RBF type to use.</param>
        /// <param name="x">The size of the x-dimension.</param>
        /// <param name="y">The size of the y-dimension.</param>
        public NeighborhoodRBF(RBFEnum type, int x, int y)
        {
            var size = new int[2];
            size[0] = x;
            size[1] = y;

            _params = new double[3];

            switch (type)
            {
                case RBFEnum.Gaussian:
                    _rbf = new GaussianFunction(2, _params, 0);
                    break;
                case RBFEnum.InverseMultiquadric:
                    _rbf = new InverseMultiquadricFunction(2, _params, 0);
                    break;
                case RBFEnum.Multiquadric:
                    _rbf = new MultiquadricFunction(2, _params, 0);
                    break;
                case RBFEnum.MexicanHat:
                    _rbf = new MexicanHatFunction(2, _params, 0);
                    break;
            }

            _rbf.Width = 1;

            _size = size;

            CalculateDisplacement();
        }
Beispiel #5
0
        /// <summary>
        /// Construct a 1d neighborhood function. 
        /// </summary>
        /// <param name="type">The RBF type to use.</param>
        public NeighborhoodRBF1D(RBFEnum type)
        {
            switch (type)
            {
                case RBFEnum.Gaussian:
                    _radial = new GaussianFunction(1, _params, 0);
                    break;
                case RBFEnum.InverseMultiquadric:
                    _radial = new InverseMultiquadricFunction(1, _params, 0);
                    break;
                case RBFEnum.Multiquadric:
                    _radial = new MultiquadricFunction(1, _params, 0);
                    break;
                case RBFEnum.MexicanHat:
                    _radial = new MexicanHatFunction(1, _params, 0);
                    break;
                default:
                    throw new AIFHError("Unknown RBF type: " + type.ToString());
            }

            _radial.Width = 1.0;
        }
Beispiel #6
0
 /// <summary>
 /// Construct the neighborhood function with the specified radial function.
 /// Generally this will be a Gaussian function but any RBF should do.
 /// </summary>
 /// <param name="radial">The radial basis function to use.</param>
 public NeighborhoodRBF1D(IFnRBF radial)
 {
     _radial = radial;
 }
Beispiel #7
0
        /// <summary>
        ///     Construct a multi-dimensional neighborhood function.
        /// </summary>
        /// <param name="size">The sizes of each dimension.</param>
        /// <param name="type">The RBF type to use.</param>
        public NeighborhoodRBF(int[] size, RBFEnum type)
        {
            _params = new double[size.Length];

            switch (type)
            {
                case RBFEnum.Gaussian:
                    _rbf = new GaussianFunction(size.Length, _params, 0);
                    break;
                case RBFEnum.InverseMultiquadric:
                    _rbf = new InverseMultiquadricFunction(size.Length, _params, 0);
                    break;
                case RBFEnum.Multiquadric:
                    _rbf = new MultiquadricFunction(size.Length, _params, 0);
                    break;
                case RBFEnum.MexicanHat:
                    _rbf = new MexicanHatFunction(size.Length, _params, 0);
                    break;
            }
            _size = size;
            CalculateDisplacement();
        }
Beispiel #8
0
 /// <summary>
 /// Construct the neighborhood function with the specified radial function.
 /// Generally this will be a Gaussian function but any RBF should do.
 /// </summary>
 /// <param name="radial">The radial basis function to use.</param>
 public NeighborhoodRBF1D(IFnRBF radial)
 {
     _radial = radial;
 }