MATLAB Answers

0

How can I build an trendline through a fixed point?

Asked by Iaroslav Gritsayenko on 15 Apr 2015
Latest activity Commented on by pfb
on 15 Apr 2015
I have scatter data and need to fit it with a curve (line) which passes through one exact and fixed point (0,0).
How can I do this?
Thank's for respond.
Iaroslav.

  0 Comments

Sign in to comment.

3 Answers

Answer by Star Strider
on 15 Apr 2015

If you do not include a constant (intercept) term in your model, it will force an intercept at (0,0). So if it is a straight line, to fit (x,y) data, this works:
x = randi(10, 10, 1); % Create Data
y = randi(50, 10, 1); % Create DAta
B = x(:)\y(:); % Regression Of Line Through Origin
yfit = x(:)*B; % Calculate Fitted Line
figure(1)
plot(x, y, 'bp') % Plot Data
hold on
plot(x, yfit, '-r') % Plot Fitted Regression Line
hold off
grid
axis([0 max(x) 0 max(y)])

  2 Comments

this is definitely more professional :)

Sign in to comment.


Answer by pfb
on 15 Apr 2015
Edited by pfb
on 15 Apr 2015

Is that a straight line or a curve? And, in the second case, which curve?
In the first case you're basically expecting that y is proportional to x. So y./x should be roughly constant, and mean(y./x) would be an estimate of the slope, right?

  0 Comments

Sign in to comment.


Answer by Iaroslav Gritsayenko on 15 Apr 2015

Thank you very much, I understood how to do it.
My line will have equation y= a*x+b, where b=0; And a=mean(Y./X)
And does mathlab have some function to build fitting curve (not only line) with the fixed point in general case?

  2 Comments

MATLAB functions all want (or will insert) a non-zero intercept term in the regressions they calculate. If you want a general case that will always fit a zero intercept, the code in my Answer will provide it.
perhaps custom equation in cftool?

Sign in to comment.