File Exchange

image thumbnail

Orthogonal Linear Regression

version 1.0.0.0 (2.03 KB) by F. Carr
Fit data using orthogonal linear regression.

6 Downloads

Updated 10 Oct 2007

View License

LINORTFIT2(X,Y) finds the coefficients of a 1st-order polynomial that best fits the data (X,Y) in an ORTHOGONAL least-squares sense. Consider the line P(1)*t + P(2), and the minimum (Euclidean) distance between this line and each datapoint [X(i) Y(i)] -- LINORTFIT2 finds P(1) and P(2) such that the sum of squared distances is minimized.

LINORTFITN(DATA) finds the coefficients of a hyperplane (in Hessian normal form) that best fits the data in an ORTHOGONAL least-squares sense. Consider the hyperplane
H = {x | dot(N,x) + C == 0},
and the minimum (Euclidean) distance between this hyperplane and each datapoint DATA(i,:) -- LINORTFITN finds N and C such that the sum of squared distances is minimized.

There is already a file in Matlab Central for orthogonal linear regression in 2 dimensions, but it uses FMINSEARCH (i.e., unconstrained nonlinear optimization by Nelder-Mead simplex search) versus this simpler, numerically stable, multidimensional version based on SVD approximation.

Cite As

F. Carr (2021). Orthogonal Linear Regression (https://www.mathworks.com/matlabcentral/fileexchange/16800-orthogonal-linear-regression), MATLAB Central File Exchange. Retrieved .

Comments and Ratings (8)

John Taylor

I found that the kmeans clustering function in Matlab provides similar results for my particular linear application.

John Taylor

Thank you. This worked well for me. Polyfit should offer this as an option.

Ed Hayter

jasongrig

Hi Jesper,

download rsquare.m from fileexchange

Iason

Jesper Kamp Jensen

Is it possible to get a R^2 for the fit to the data?

Tharindu Weerakoon

Hi Carr,

I was bit confused to get the estimated (xl,yl) from this function.

Suppose my input is
x=[9 8 6 4 2 ]
y=[1 4 6 10 12]

Both are independent, has some errors.

If I process through LINORTFIT2(X,Y), it will get the p(1) and p(2) to compute the yl=p(1)*x+p(2)

So how to get xl?
[x,y]-->[xl,yl]

xl and yl should differ from original data set x and y.

thanks

Ondrej Kotecky

Some more resources about the problem: http://www.mbari.org/staff/etp3/regress.htm

shaho zandi

MATLAB Release Compatibility
Created with R2006a
Compatible with any release
Platform Compatibility
Windows macOS Linux
Categories

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!