00001 // $Id$ 00002 // Copyright (C) 2003 Klaas Gadeyne <first dot last at gmail dot com> 00003 // Wim Meeussen <wim dot meeussen at mech dot kuleuven dot ac dot be> 00004 // 00005 // This program is free software; you can redistribute it and/or modify 00006 // it under the terms of the GNU Lesser General Public License as published by 00007 // the Free Software Foundation; either version 2.1 of the License, or 00008 // (at your option) any later version. 00009 // 00010 // This program is distributed in the hope that it will be useful, 00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 // GNU Lesser General Public License for more details. 00014 // 00015 // You should have received a copy of the GNU Lesser General Public License 00016 // along with this program; if not, write to the Free Software 00017 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00018 // 00019 00020 #include "../sample/sample.h" 00021 #include "nonlinearanalyticmeasurementmodel_gaussianuncertainty_ginac.h" 00022 00023 namespace BFL 00024 { 00025 00026 NonLinearAnalyticMeasurementModelGaussianUncertainty_Ginac::NonLinearAnalyticMeasurementModelGaussianUncertainty_Ginac 00027 (NonLinearAnalyticConditionalGaussian_Ginac* const pdf) 00028 : AnalyticMeasurementModelGaussianUncertainty( new NonLinearAnalyticConditionalGaussian_Ginac( *pdf ) ) 00029 {} 00030 00031 00032 // copy constructor: Not implemented yet 00033 /* 00034 NonLinearAnalyticMeasurementModelGaussianUncertainty_Ginac::NonLinearAnalyticMeasurementModelGaussianUncertainty_Ginac 00035 (const NonLinearAnalyticMeasurementModelGaussianUncertainty_Ginac& m) 00036 : AnalyticMeasurementModelGaussianUncertainty( new NonLinearAnalyticConditionalGaussian_Ginac( (NonLinearAnalyticConditionalGaussian_Ginac*) m.MeasurementPdfGet()) ) 00037 {} 00038 */ 00039 00040 NonLinearAnalyticMeasurementModelGaussianUncertainty_Ginac::~NonLinearAnalyticMeasurementModelGaussianUncertainty_Ginac() {} 00041 00042 /* 00043 std::ostream& operator<< (std::ostream& os, NonLinearAnalyticMeasurementModelGaussianUncertainty_Ginac& m) 00044 { 00045 os << "\nMeasurementModel:" << endl; 00046 os << *(m.MeasurementPdfGet()); 00047 return os; 00048 } 00049 */ 00050 00051 00052 MatrixWrapper::ColumnVector 00053 NonLinearAnalyticMeasurementModelGaussianUncertainty_Ginac::PredictionGet(const MatrixWrapper::ColumnVector& u, 00054 const MatrixWrapper::ColumnVector& x) 00055 { 00056 MeasurementPdfGet()->ConditionalArgumentSet(1,u); 00057 MeasurementPdfGet()->ConditionalArgumentSet(0,x); 00058 return MeasurementPdfGet()->ExpectedValueGet(); 00059 } 00060 00061 00062 MatrixWrapper::SymmetricMatrix 00063 NonLinearAnalyticMeasurementModelGaussianUncertainty_Ginac::CovarianceGet(const MatrixWrapper::ColumnVector& u, 00064 const MatrixWrapper::ColumnVector& x) 00065 { 00066 MeasurementPdfGet()->ConditionalArgumentSet(1,u); 00067 MeasurementPdfGet()->ConditionalArgumentSet(0,x); 00068 return MeasurementPdfGet()->CovarianceGet(); 00069 } 00070 00071 00072 MatrixWrapper::Matrix 00073 NonLinearAnalyticMeasurementModelGaussianUncertainty_Ginac::df_dxGet(const MatrixWrapper::ColumnVector& u, 00074 const MatrixWrapper::ColumnVector& x) 00075 { 00076 MeasurementPdfGet()->ConditionalArgumentSet(1,u); 00077 MeasurementPdfGet()->ConditionalArgumentSet(0,x); 00078 return ((AnalyticConditionalGaussian *) MeasurementPdfGet())->dfGet(0); 00079 } 00080 00081 GiNaC::matrix 00082 NonLinearAnalyticMeasurementModelGaussianUncertainty_Ginac::FunctionGet() 00083 { 00084 return ((NonLinearAnalyticMeasurementModelGaussianUncertainty_Ginac *) MeasurementPdfGet())->FunctionGet(); 00085 } 00086 00087 vector<GiNaC::symbol> 00088 NonLinearAnalyticMeasurementModelGaussianUncertainty_Ginac::StateGet() 00089 { 00090 return ((NonLinearAnalyticMeasurementModelGaussianUncertainty_Ginac *)MeasurementPdfGet())->StateGet(); 00091 } 00092 00093 vector<GiNaC::symbol> 00094 NonLinearAnalyticMeasurementModelGaussianUncertainty_Ginac::InputGet() 00095 { 00096 return ((NonLinearAnalyticMeasurementModelGaussianUncertainty_Ginac *) MeasurementPdfGet())->InputGet(); 00097 } 00098 00099 vector<GiNaC::symbol> 00100 NonLinearAnalyticMeasurementModelGaussianUncertainty_Ginac::ConditionalGet() 00101 { 00102 return ((NonLinearAnalyticMeasurementModelGaussianUncertainty_Ginac *) MeasurementPdfGet())->ConditionalGet(); 00103 } 00104 00105 } // End namespace BFL