diff --git a/MMVII/include/MMVII_Mappings.h b/MMVII/include/MMVII_Mappings.h index 9d8e6dcfd5..4937dc8126 100644 --- a/MMVII/include/MMVII_Mappings.h +++ b/MMVII/include/MMVII_Mappings.h @@ -29,7 +29,16 @@ namespace MMVII { template class cDataBoundedSet ; +template class cMapping; template class cDataMapping; +template class cDataInvertibleMapping ;// : public cDataMapping +template class cDataIterInvertMapping ;// : public cDataInvertibleMapping +template class cDataIIMFromMap ; // : public cDataIterInvertMapping + +template class cMappingIdentity ; // : public cDataMapping +template class cDataMapCalcSymbDer ;// : public cDataMapping +template class cInvertMappingFromElem ;// : public cDataInvertibleMapping +{ /** \file MMVII_Mappings.h \brief contain interface class for continuous mapping @@ -448,13 +457,19 @@ template class cInvertMappingFromElem : public }; /** - We have a set of function F1, .. Fp R^k => R ^n - + We have a set of function F1, .. Fp R^k => R ^n, we want to estimate F as a linear combination: + F = Sum Al Fl We have samples Km , Nm + We want to solve by lest square : F (Km) = Nm - We want to solve by lest square : - Sum Al Fl (Km) = Nm + The computation is not optimized (not parallized) as it would add a complexity important for + a probable low gain : + * there is not so many samples + * we dont compute the derivative + * the filling of matrix is however a cost not parallized */ + + template class cLeastSqComputeMaps { public : @@ -464,6 +479,7 @@ template class cLeastSqComputeMap typedef std::vector tVecOut; cLeastSqComputeMaps(size_t aNbFunc); + /// Add obs void AddObs(const tPtIn & aPt,const tPtOut & aValue,const tPtOut & aPds); void AddObs(const tPtIn & aPt,const tPtOut & aValue,const Type & aPds); void AddObs(const tPtIn & aPt,const tPtOut & aValue); diff --git a/MMVII/src/Mappings/cLeastSqComputeMaps.cpp b/MMVII/src/Mappings/cLeastSqComputeMaps.cpp index 00cce7bf3f..21cc70bfa8 100644 --- a/MMVII/src/Mappings/cLeastSqComputeMaps.cpp +++ b/MMVII/src/Mappings/cLeastSqComputeMaps.cpp @@ -47,6 +47,19 @@ template AddObs(aPtIn,aValue,1.0); } +/* ============================================= */ +/* cLeastSqCompMapCalcSymb */ +/* ============================================= */ + + +template + class cLeastSqCompMapCalcSymb : public cLeastSqCompMapCalcSymb +{ + public : + typedef typename NS_SymbolicDerivative::cCalculator tCalc; +}; +/* +*/ /* ===================================================== */ /* ===== INSTANTIATION ===== */ @@ -56,6 +69,7 @@ template template class cLeastSqComputeMaps; INSTANTIATE_LSQMAP(tREAL8,3,2) +INSTANTIATE_LSQMAP(tREAL8,2,2) /* #define INSTANTIATE_OPMulMatVect(T1,T2)\