44 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
		
		
			
		
	
	
			44 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
|  | /**
 | ||
|  |  * @file    timeGaussianFactorGraph.cpp | ||
|  |  * @brief   Time elimination with simple Kalman Smoothing example | ||
|  |  * @author  Frank Dellaert | ||
|  |  */ | ||
|  | 
 | ||
|  | #include <time.h>
 | ||
|  | #include <CppUnitLite/TestHarness.h>
 | ||
|  | #include "smallExample.h"
 | ||
|  | #include "Ordering.h"
 | ||
|  | 
 | ||
|  | using namespace std; | ||
|  | using namespace gtsam; | ||
|  | 
 | ||
|  | /* ************************************************************************* */ | ||
|  | // Create a Kalman smoother for t=1:T and optimize
 | ||
|  | double timeKalmanSmoother(int T) { | ||
|  | 	GaussianFactorGraph smoother = createSmoother(T); | ||
|  | 	Ordering ordering; | ||
|  | 	for (int t = 1; t <= T; t++) ordering.push_back(symbol('x',t)); | ||
|  | 	clock_t start = clock(); | ||
|  | 	smoother.optimize(ordering); | ||
|  | 	clock_t end = clock (); | ||
|  | 	double dif = (double)(end - start) / CLOCKS_PER_SEC; | ||
|  | 	return dif; | ||
|  | } | ||
|  | 
 | ||
|  | /* ************************************************************************* */ | ||
|  | TEST(timeGaussianFactorGraph, linearTime) | ||
|  | { | ||
|  | 	int T = 1000; | ||
|  | 	double time1 = timeKalmanSmoother(  T); // cout << time1 << endl;
 | ||
|  | 	double time2 = timeKalmanSmoother(2*T); // cout << time2 << endl;
 | ||
|  | 	DOUBLES_EQUAL(2*time1,time2,0.001); | ||
|  | } | ||
|  | 
 | ||
|  | /* ************************************************************************* */ | ||
|  | int main() { | ||
|  | 	TestResult tr; | ||
|  | 	TestRegistry::runAllTests(tr); | ||
|  | 	return 0; | ||
|  | } | ||
|  | /* ************************************************************************* */ |