|
Isis 3.0 Object Programmers' Reference |
Home |
#include <BasisFunction.h>
Inheritance diagram for Isis::BasisFunction:


This is a base class for generating "generic" equations for the Isis least squares fitting algorithm (IsisLSQ). It allows the programmer to set up equations in the form of:
where C1-CN are coefficients and T1-TN are terms. Note that terms can be comprised of multiple variables and/or functions. For example,
By deriving different functions off of this base class this allows the least squares class to be generalized.
For internal use only.
Definition at line 59 of file BasisFunction.h.
Public Member Functions | |
| BasisFunction (const std::string &name, int numVars, int numCoefs) | |
| Creates a BasisFunction object. | |
| virtual | ~BasisFunction () |
| Destroys the BasisFunction object. | |
| void | SetCoefficients (const std::vector< double > &coefs) |
| Set the coefficients for the equation. | |
| double | Evaluate (const std::vector< double > &vars) |
| Compute the equation using the input variables. | |
| virtual void | Expand (const std::vector< double > &vars) |
| This is the function you should replace depending on your needs. | |
| int | Coefficients () const |
| Returns the number of coefficients for the equation. | |
| int | Variables () const |
| Returns the number of variables in the equation. | |
| std::string | Name () const |
| Returns the name of the equation. | |
| double | Term (int c) const |
| Returns the cth term. | |
| double | Coefficient (int i) const |
| Returns the ith coefficient. | |
Protected Attributes | |
| std::string | p_name |
| The name of the equation. Call it by using Name(). | |
| int | p_numVars |
| The number of variables in the equation. Call it by using Variables(). | |
| int | p_numCoefs |
| The number of coefficients in the equation. | |
| std::vector< double > | p_coefs |
| A vector of the coefficients in the equation. | |
| std::vector< double > | p_terms |
| A vector of the terms in the equation. | |
| Isis::BasisFunction::BasisFunction | ( | const std::string & | name, | |
| int | numVars, | |||
| int | numCoefs | |||
| ) |
Creates a BasisFunction object.
| name | Name of the BasisFunction. For example, "affine". | |
| numVars | Number of variables in the equation. For example:
has two variables: y and z. | |
| numCoefs | Number of coefficients in the equation. For example:
has three coefficients: C1, C2 & C3. |
Definition at line 44 of file BasisFunction.cpp.
References p_name, p_numCoefs, and p_numVars.
| virtual Isis::BasisFunction::~BasisFunction | ( | ) | [inline, virtual] |
| double Isis::BasisFunction::Coefficient | ( | int | i | ) | const [inline] |
Returns the ith coefficient.
| i | The index for the desired coefficient. |
Definition at line 109 of file BasisFunction.h.
Referenced by Isis::PolynomialUnivariate::DerivativeVar(), Isis::SurfaceModel::MinMax(), Isis::AutoReg::ModelSurface(), Isis::SpicePosition::ReloadCache(), Isis::SpicePosition::SetPolynomial(), Isis::OverlapNormalization::Solve(), Isis::Affine::Solve(), and Isis::BundleAdjust::Update().
| int Isis::BasisFunction::Coefficients | ( | ) | const [inline] |
Returns the number of coefficients for the equation.
Definition at line 74 of file BasisFunction.h.
References p_numCoefs.
Referenced by Isis::PolynomialUnivariate::DerivativeCoef(), Isis::PolynomialUnivariate::DerivativeVar(), Isis::SpicePosition::SetPolynomial(), Isis::OverlapNormalization::Solve(), Isis::LeastSquares::SolveQRD(), and Isis::LeastSquares::SolveSVD().
| double Isis::BasisFunction::Evaluate | ( | const std::vector< double > & | vars | ) |
Compute the equation using the input variables.
| vars | A vector of double values to use for the equation. After setting the coefficients, this can be invoked many times to compute output values given input values. |
Definition at line 73 of file BasisFunction.cpp.
References _FILEINFO_, Expand(), Isis::iException::Message(), p_coefs, p_numCoefs, p_numVars, and p_terms.
Referenced by Isis::LeastSquares::Evaluate(), Isis::SpicePosition::ReloadCache(), Isis::LeastSquares::SolveQRD(), Isis::LeastSquares::SolveSparse(), and Isis::LeastSquares::SolveSVD().
| void Isis::BasisFunction::Expand | ( | const std::vector< double > & | vars | ) | [virtual] |
This is the function you should replace depending on your needs.
It will expand the variables into the terms of the equation. For example,
must be expanded into the p_terms vector as (1.0, y, z, y*z). Note that the term expansion is not limited, you can use cos, sin, sqrt, abs, etc. This virtual method is automatically invoked by the Evaluate method. We provide a default expansion of p_terms = vars, just a linear combination of the variables.
| vars | A vector of double values to use for the expansion. |
Reimplemented in Isis::Parabola, Isis::PolynomialBivariate, and Isis::PolynomialUnivariate.
Definition at line 108 of file BasisFunction.cpp.
References p_terms.
Referenced by Evaluate(), Isis::LeastSquares::FillSparseA(), Isis::LeastSquares::SolveQRD(), and Isis::LeastSquares::SolveSVD().
| std::string Isis::BasisFunction::Name | ( | ) | const [inline] |
Returns the name of the equation.
Definition at line 86 of file BasisFunction.h.
References p_name.
Referenced by Isis::LeastSquares::AddKnown().
| void Isis::BasisFunction::SetCoefficients | ( | const std::vector< double > & | coefs | ) |
Set the coefficients for the equation.
| coefs | A vector of coefficients for the equation. |
Definition at line 55 of file BasisFunction.cpp.
References _FILEINFO_, Isis::iException::Message(), p_coefs, and p_numCoefs.
Referenced by Isis::SpicePosition::SetPolynomial(), Isis::LeastSquares::SolveQRD(), Isis::LeastSquares::SolveSparse(), and Isis::LeastSquares::SolveSVD().
| double Isis::BasisFunction::Term | ( | int | c | ) | const [inline] |
Returns the cth term.
This is only valid after a Evalute/Expand has been invoked. It represents the expansion of the variables into the ith term. For example,
would return x*y for the 3rd term (zero-based)
| c | The index for the desired coefficient. |
Definition at line 101 of file BasisFunction.h.
References p_terms.
Referenced by Isis::LeastSquares::FillSparseA(), Isis::LeastSquares::SolveQRD(), and Isis::LeastSquares::SolveSVD().
| int Isis::BasisFunction::Variables | ( | ) | const [inline] |
Returns the number of variables in the equation.
Definition at line 80 of file BasisFunction.h.
References p_numVars.
Referenced by Isis::LeastSquares::AddKnown(), and Isis::Parabola::Expand().
std::vector<double> Isis::BasisFunction::p_coefs [protected] |
A vector of the coefficients in the equation.
Call it by using Coefficient()
Definition at line 123 of file BasisFunction.h.
Referenced by Evaluate(), and SetCoefficients().
std::string Isis::BasisFunction::p_name [protected] |
The name of the equation. Call it by using Name().
Definition at line 109 of file BasisFunction.h.
Referenced by BasisFunction(), and Name().
int Isis::BasisFunction::p_numCoefs [protected] |
The number of coefficients in the equation.
Call it by using Coefficients()
Definition at line 119 of file BasisFunction.h.
Referenced by BasisFunction(), Coefficients(), Evaluate(), and SetCoefficients().
int Isis::BasisFunction::p_numVars [protected] |
The number of variables in the equation. Call it by using Variables().
Definition at line 115 of file BasisFunction.h.
Referenced by BasisFunction(), Evaluate(), and Variables().
std::vector<double> Isis::BasisFunction::p_terms [protected] |
A vector of the terms in the equation.
Call it by using Term()
Definition at line 127 of file BasisFunction.h.
Referenced by Evaluate(), Isis::PolynomialUnivariate::Expand(), Isis::PolynomialBivariate::Expand(), Isis::Parabola::Expand(), Expand(), and Term().