Path: news.mathworks.com!not-for-mail From: <HIDDEN> Newsgroups: comp.soft-sys.matlab Subject: Re: Procrustes Analysis without Reflection Date: Mon, 12 May 2008 15:23:04 +0000 (UTC) Organization: The MathWorks, Inc. Lines: 44 Message-ID: <g09nco$6f1$1@fred.mathworks.com> References: <435f98ff-fb02-495f-9600-16fbad0846ac@w7g2000hsa.googlegroups.com> Reply-To: <HIDDEN> NNTP-Posting-Host: webapp-03-blr.mathworks.com Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: 8bit X-Trace: fred.mathworks.com 1210605784 6625 172.30.248.38 (12 May 2008 15:23:04 GMT) X-Complaints-To: news@mathworks.com NNTP-Posting-Date: Mon, 12 May 2008 15:23:04 +0000 (UTC) X-Newsreader: MATLAB Central Newsreader 1187260 Xref: news.mathworks.com comp.soft-sys.matlab:467923 rizwindu <bgeorge@gmail.com> wrote in message <435f98ff- fb02-495f-9600-16fbad0846ac@w7g2000hsa.googlegroups.com>... > Hi all, > > I'm working on a problem that requires the procrustes alignment of two > sets of data, but it is important that the proposed transformation > does not allow reflection. The MatLab procrustes function allows this > and I was wondering if anyone knows of a freely available m-file that > will perform Procrustes analysis without allowing reflection. > > Thanks in advance, > > Ben. ------------ This must be a hasty reply because I have a doctor's appointment in just a few minutes. Later in the day I can send a more complete response. If X and Y are the two n x m data sets in question where n is the number of data items and m the number of components to the data, then one step of the procrustes procedure is to do a singular value decomposition, 'svd', on the m x m matrix X'*Y, getting X'*Y = U*S*V' where U and V are unitary matrices and S is diagonal with the non-negative singular values. The best fitting unitary transformation in the least squares sense is given by Q = V*U'. However, if it turns out that Q involves a reflection, that is, its determinant is -1, then what you need to do is reverse the sign in the rightmost column of either U or V, corresponding to the smallest singular value. Then do Q = V*U' with the modified U or V, and you get a unitary transformation without reflection which is the best fit among such non-reflective transformations. The translation and scaling steps remain the same. It should be said that if you would have had a reasonably close fit using a reflected transformation and the smallest singular value is fairly large, then you will get a comparatively poor fit with the best non-reflected transformation. It would be analogous to trying to fit the corresponding vertices of a fat triangle onto its mirror image without turning it over. More later. I must go now. My apologies. Roger Stafford