MATLAB Answers


Curve fitting, setting domain/forcing asymptote

Asked by Benjamin
on 17 May 2013

Playing around with data analysis. I have no experience in this area so apologies if I'm asking obvious questions.

I have two data vectors that I want to find the relationship between.

I have with cftool found an exponential function that seems to describe it fairly well. But this function gives a bunch of values outside of my physically possible domain of x-values.

Is it possible to set conditions on the function fitting? For example, I know that y will tend to infinity as x approaches 1 from the right, and y will tend to 0 as x approaches infinity.




No products are associated with this question.

1 Answer

Answer by Tom Lane
on 17 May 2013
 Accepted answer

I can't think of a generic way to constrain a function to tend to infinity as x approaches 1, but you might have some luck defining a function that has that behavior and fitting it. For example:

load census                    % define some data having your shape
x = (cdate-1775)/10;
y = 1./pop;
ft = fittype('b1/((x-1)^b2)'); % has the desired asymptotic behavior
f = fit(x,y,ft,'start',[1 1])
plot(x,y,'bx', x,f(x),'r-')    % not a great fit, but it's a start


Join the 15-year community celebration.

Play games and win prizes!

Learn more
Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!