Projecting a dataset on an ellipse
조회 수: 4 (최근 30일)
이전 댓글 표시
Hi,
I fit an ellipse (in green) to my dataset (white dots).
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1224122/image.png)
I'd like to project each data point on the ellipse (or shifting each data point onto the ellipse using the shortest distance). Those projections on the ellipse will form a new set of data. How can I achieve this?
댓글 수: 2
Jonas
2022년 12월 8일
if you have the ellipse and your x and y corrdinates, use the interp2() function with the 'nearest' interpolation method
답변 (1개)
Matt J
2022년 12월 12일
This code requires the download of trustregprob from the file exchange
function Xp=ellipseprj(Q,xc,X0)
%Projects given 2D points onto 2D ellipse
%
% Xp=ellipseprj(Q,xc,X0)
%
%IN:
%
% Q,xc: Ellipse equation matrices. Q is 2x2 and xc is 2x1 such that
% ellipse equation is (y-xc).'*Q*(y-xc)=1
% X0: 2xN matrix of points to be projected
%
%OUT:
%
% Xp: 2xN matrix of projected points
N=size(X0,2);
xc=xc(:);
[Rt,D]=eig(Q);
Rt=real(Rt); D=real(D);
iD=diag(1./diag(D));
iDsqrt=sqrt(iD);
b=-iDsqrt*Rt.'*bsxfun(@minus,xc,X0);
Yp=nan(size(X0));
for i=1:N
Yp(:,i)=trustregprob(iD,b(:,i),1);
end
Xp=bsxfun(@plus, Rt*iDsqrt*Yp,xc);
댓글 수: 2
Matt J
2022년 12월 16일
Every ellipse obeys an equation of that form. I've given an example over in your duplicate post,
참고 항목
카테고리
Help Center 및 File Exchange에서 Least Squares에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!