function [de,ue] = ope(ua,da,ue);
%
%	ope - Orthogonal Procrustes Expansion
%
%	[de,ue] = ope(ua,da,ue);
%
%	Computes the unmeasured partition of the experimental mode shapes
%	such that there is a minimal-error linear relationship between
%	the analytical and measured eigenvectors
%
%	Also mass-normalizes the experimental mode shapes provided that the
%	analytical mode shapes are mass-normalized
%
%	For details, see Zimmerman and Smith - "Model Refinement and Damage
%	Location for Intelligent Structures" -- from Intelligent Structural
%	Systems, Kluwer Academic, 1992
%
%	Outputs
%	-------
%	   de = Umeasured partition of experimental mode shapes
%	   ue = Measured partition of experimental mode shapes
%
%	Inputs
%	------
%	   ua = Measured partition of analytical mode shapes
%	   da = Unmeasured partition of analytical mode shapes
%	   ue = Measured partition of experimental mode shapes

%  Version SWD960105
%
%  Copyright (c) 1995-1996 by Scott W. Doebling
%	Los Alamos National Laboratory
%	ESA-EA, doebling@lanl.gov
%

[u,s,v] = svd( ua' * ue );

%  Apply to the unmeasured partition of the analytical eigenvectors

    P = (u * v');

    de = da * P;
    ue = ua * P;

end

return
