45 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Matlab
		
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Matlab
		
	
	
| function plot3DPoints(values, linespec, marginals)
 | |
| %PLOT3DPOINTS Plots the Point3's in a values, with optional covariances
 | |
| %   Finds all the Point3 objects in the given Values object and plots them.
 | |
| % If a Marginals object is given, this function will also plot marginal
 | |
| % covariance ellipses for each point.
 | |
| 
 | |
| import gtsam.*
 | |
| 
 | |
| if ~exist('linespec', 'var') || isempty(linespec)
 | |
|     linespec = 'g*';
 | |
| end
 | |
| haveMarginals = exist('marginals', 'var');
 | |
| keys = KeyVector(values.keys);
 | |
| 
 | |
| holdstate = ishold;
 | |
| hold on
 | |
| 
 | |
| if haveMarginals
 | |
|     % Plot points and covariance matrices (slow)
 | |
|     for i = 0:keys.size-1
 | |
|         key = keys.at(i);
 | |
|         try
 | |
|             p = values.atPoint3(key)
 | |
|             P = marginals.marginalCovariance(key);
 | |
|             gtsam.plotPoint3(p, linespec, P);
 | |
|         catch
 | |
|             % I guess it's not a Point3
 | |
|         end
 | |
|     end
 | |
| else
 | |
|     % Extract all in C++ and plot all at once (fast)
 | |
|     P = utilities.extractPoint3(values);
 | |
|     if size(linespec,2)==1
 | |
|         plot3(P(:,1),P(:,2),P(:,3),[linespec '*']);
 | |
|     else
 | |
|         plot3(P(:,1),P(:,2),P(:,3),linespec);
 | |
|     end
 | |
| end
 | |
| 
 | |
| if ~holdstate
 | |
|     hold off
 | |
| end
 | |
| 
 | |
| end
 |