No BSD License  

Highlights from
error_ellipse

4.90244

4.9 | 41 ratings Rate this file 100 Downloads (last 30 days) File Size: 8.15 KB File ID: #4705
image thumbnail

error_ellipse

by AJ Johnson

 

01 Apr 2004 (Updated 13 Apr 2004)

Plot an error ellipse depicting confidence interval given a covariance matrix.

| Watch this File

File Information
Description

% ERROR_ELLIPSE - plot an error ellipse, or ellipsoid, defining
% confidence region
% ERROR_ELLIPSE(C22) - Given a 2x2 covariance matrix, plot the
% associated error ellipse, at the origin. It returns a graphics handle
% of the ellipse that was drawn.
%
% ERROR_ELLIPSE(C33) - Given a 3x3 covariance matrix, plot the
% associated error ellipsoid, at the origin, as well as its projections
% onto the three axes. Returns a vector of 4 graphics handles, for the
% three ellipses (in the X-Y, Y-Z, and Z-X planes, respectively) and for
% the ellipsoid.
%
% ERROR_ELLIPSE(C,MU) - Plot the ellipse, or ellipsoid, centered at % MU, a vector whose length should match that of C (which is 2x2
% or 3x3).
%
% ERROR_ELLIPSE(...,'Property1',Value1,'Name2',Value2,...) sets
% the values of specified properties, including:
% 'C' - Alternate method of specifying the covariance matrix
% 'mu' - Alternate method of specifying the ellipse (-oid) center
% 'conf' - A value betwen 0 and 1 specifying the confidence interval.
% the default is 0.5 which is the 50% error ellipse.
% 'scale' - Allow the plot the be scaled to difference units.
% 'style' - A plotting style used to format ellipses.
% 'clip' - specifies a clipping radius. Portions of the ellipse, -oid,
% outside the radius will not be shown.
%
% NOTES: C must be positive definite for this function to work
% properly.

MATLAB release MATLAB 6.1 (R12.1)
Tags for This File  
Everyone's Tags
Tags I've Applied
Add New Tags Please login to tag files.
Comments and Ratings (51)
07 Apr 2004 Una Kusan

It doesn't work on my matlab platform (6.1).

13 Apr 2004 Una Kusan

Now it's working fine.
Thanks again!
U.

13 Apr 2004 Mark Brown

Doesn't run. I get an error...
??? Undefined command/function 'getopt'.
Error in ==> error_ellipse at 61
prop = getopt(default_properties, varargin{:});

29 Jul 2004 Gordon Dryden

There is an error at line 117. The line reads: XYZ = [X(:),Y(:),Z(:)]*sqrt(eigval)*eigvec'; but should be: XYZ = [X(:),Y(:),Z(:)]*eigvec*sqrt(eigval)*eigvec';

02 Dec 2004 Niklaus Hugi  
05 Jan 2005 Kamini Singha

works fabulously.

21 Mar 2005 Paul Thompson

There is NOT an error at line 117.

14 Oct 2005 Juan Pablo Nieto

It works excellent

24 Jan 2006 Laurent Nguyen

Works perfectly

06 Feb 2006 oxana govokhina

Excellent

27 Feb 2006 ryan jessup

worked perfectly! Thanks!

09 Apr 2006 M Fellows

Very Useful!

04 May 2006 Valentin Kuklin

Amazing. Good work! Thanks a lot!

10 May 2006 Damien Dusha

You just saved me a day and most of my hair :)

16 May 2006 Matt Irwin

Great code, thanks.

05 Jul 2006 Chris Willy

Great code, very useful. Saved me lots of time.

14 Jul 2006 John Magirk

perfect! works great AND easy to use.

02 Nov 2006 Sujai Kumar  
10 Jan 2007 mohan palani  
25 Jun 2007 Feng Rice

Excellent.

03 Jul 2007 kevin chen

handy

21 Nov 2007 Volkan Ozturk

How can i see two plots on the same graphics. I have to do some comparison.

Regards

21 Feb 2008 phil fox

Be aware that the default confidence interval is 0.5 rather than more standard values such as 0.683, 0.9 etc.. Use the 'conf' parameter to change.

11 Apr 2008 Matthew Nelson

very useful. thank you

26 Apr 2008 Marino Pagan

Thank you very much!!! Excellent!

14 May 2008 Siladitya Dey  
15 May 2008 Trevor Wood

excellent, thanks.

04 Jun 2008 Dagmar Schoch  
21 Jun 2008 M ChC

how do I change the color of the ellipse?

25 Jul 2008 Adam Attarian

precisely what i needed! hooray.

06 Aug 2008 Alex Yakubovich

re: change color, multiple ellipses on same plot

To have multiple ellipses, just type 'hold on' in the command window before calling error_ellipse. You can change the color once you've plotted the ellipse in the property editor (open pe in view>property editor)

17 Sep 2008 R Lewis

Did the job flawlessly.

12 Nov 2008 Dan Stowell

Delightful tool, easy to use and worked straight away

02 Dec 2008 John

function works great and is easy to use. thank you

01 Jul 2009 Nora  
01 Sep 2009 Miguel Torres  
16 Nov 2009 Benjamin Pavie  
16 Nov 2009 Pearl  
17 Nov 2009 David

% NOTES: C must be positive definite for this function to
% work properly.

This is quite a strange restriction, because covariance matrices are positive semi-definite symmetric (that is, they may include negative values off the diagonal). For example, it is not possible to visualize the following very simple, and valid, covariance matrix: C = [1 -2; -2; 4].

Does anybody know of a Matlab function which is capable of visualizing all kinds of covariance matrices (both 2D and 3D)? Thanks!

18 Nov 2009 David

Sorry, but my previous comment contained some errors:
- C = [1 -2; -2; 4]. This is not a valid covariance matrix.
- "positive semi-definite symmetric (that is, they may include negative values off the diagonal)." This is not true.

What is true, is that C must be a positive semi-definite matrix. But that is just a minor comment, because the implementation allows for that.

Conclusion:
This Matlab function works. Thanks!

19 Apr 2010 Jenn Risk

Very helpful optically - but can it calculate the area of the error ellipse? I couldn't easily get it to adapt to this. Any help would be great!

22 Jun 2010 Ipsita

??? function h = error_ellipse(varargin)
    |
Error: Function definitions are not permitted at the prompt or in scripts.

 I get the above error, can anyone help ? I am using MATLAB 7.6.0(2008a). Thanks

19 Aug 2010 Marcel

Perfect piece of code! I am using it alot. Had to change the API though to make it a bit more flexible in terms of plot properties (e.g. passing it a parent axes handle).

01 Sep 2010 Ahmed Fasih

Jenn Risk: just use det(CovMatrix) for area/volume.

M ChC, Volkan Ozturk:
figure; handle(1)=error_ellipse(A); hold on; handle(2)=error_ellipse(B); handle(3)=error_ellipse(C); set(handle(2), 'color','r', 'linestyle',':'); set(handle(3), 'color','k', 'linestyle','--');

27 Dec 2010 Zohar Bar-Yehuda  
17 Mar 2011 Claus

Worked just great for me and saved a LOT of time writing my own code. Thanks!

I'm currently working on a area/volume calculation. @Ahmed Fasih: det(covMatrix) may definately be used as a measure, however, it's not the actual area/volume.

18 Mar 2011 Claus

@Jenn Risk & @me: Finally got a solution for area/volume. It's all based on the eigenvalues of the CovMatrix (the prerequisite for error_ellipse).
Area (2D): area=prod(sqrt(eig(C)))*pi
Volume (3D): volume=prod(sqrt(eig(C)))*4/3*pi

Hope that helps. Cheers!

  

21 Mar 2011 Claus

Ooops, there's an obvious mistake in my area/volume calculation from above. I forgot to factor in the quantile for the desired percentile, i.e., you have to multiply the area/volume with the quantile of the desired confidence interval (conf). You can use the embedded functions from error_ellipse to calculate Pconf (for the default of conf=0.5, Pconf(2D)=1.1774/Pconf(3D)=1.5382). The formular for area (volume accordingly) should read:
area=prod(sqrt(eig(C)))*pi*Pconf

09 Apr 2011 gunes bay1r

thanks for conf. interval comment phil fox

29 Sep 2011 Anthony

Very helpful and easy to use.

26 Oct 2011 Takuma  
Please login to add a comment or rating.
Updates
13 Apr 2004

Fixed major blunder: missing function.

Tag Activity for this File
Tag Applied By Date/Time
statistics AJ Johnson 22 Oct 2008 07:17:16
probability AJ Johnson 22 Oct 2008 07:17:16
eep AJ Johnson 22 Oct 2008 07:17:16
ellipse AJ Johnson 22 Oct 2008 07:17:16
covariance AJ Johnson 22 Oct 2008 07:17:16
confidence AJ Johnson 22 Oct 2008 07:17:16
eigenvalue AJ Johnson 22 Oct 2008 07:17:16
eigenvector AJ Johnson 22 Oct 2008 07:17:16
confidence Sreenivas Yelneedi 21 Jan 2009 02:25:43
covariance hatem 23 Feb 2011 17:39:26
ellipse razzoli Edelman 25 Apr 2011 18:09:55

Contact us at files@mathworks.com