plot an exponential curve to connect between two points

조회 수: 7 (최근 30일)
Amr Hashem
Amr Hashem 2016년 3월 28일
답변: Image Analyst 2016년 3월 29일
I want to draw a curve in a negative exponential shape like this green one:
I use this code (to join between point 38 and -52 by negative exponential curve):
x1 = -52;
y1 = 0.0101836;
x2 = 38;
y2=0.000359214;
dy=y1-y2;
dx=x2-x1;
k=0.3;
f=@(x) dy.*exp(-k*(x+dx))+y2;
xx=linspace(x1,x2,100);
yy=f(xx);
plot(xx,yy,'g--','LineWidth',2);
plot([38,38],[0.008 0.1],'g--','linewidth',1)
but unfortunately I got a straight line instead of exponential curve:
How could I adjust the code to get the green curve?
  댓글 수: 4
John D'Errico
John D'Errico 2016년 3월 28일
What does this have to do with extrapolation? Extrapolation uses information from data that you have, then predicts values outside of the domain of your data using that information. So this actually has NOTHING to do with extrapolation. All you are asking is how to connect two points with some random curve.
Anyway, there is NO purely exponential curve that connects those two points.
Given my statement (which is true) then you need to choose some arbitrary form for an exponential-like curve. Sadly, there are infinitely many exponential-like curves that COULD pass through those two points.
Amr Hashem
Amr Hashem 2016년 3월 28일
It seems that my question is not clear for you.
I already use the data to extrapolate those two points (the two points (-52,0.1) & (38,0) were extrapolated based on the data).
I created the first figure, using the code, which connect two points by negative exponential curve.
BUT when I applied this code to connect the new two points (-52,0.1) & (38,0), I got the second figure, which is a straight line instead of negative exponential curve.
Now my question is: how to adjust the code to connect the two points by an exponential curve (like the first figure)?

댓글을 달려면 로그인하십시오.

답변 (2개)

Walter Roberson
Walter Roberson 2016년 3월 29일
Exponential curves are never 0 except at infinity. You cannot use an exponential curve to connect to (38,0)
If you are willing to have the (38,0) be (38,epsilon) for some non-negative epsilon, then
N = 30; %adjust as desired, number of points in the curve including endpoints
smooth_y = 10.^logspace( log(0.1), log(epsilon), N);
smooth_x = linspace(-52, 38, N);
plot(smooth_x, smooth_y);

Image Analyst
Image Analyst 2016년 3월 29일
Perhaps you should consider the Wiebull distribution: https://en.wikipedia.org/wiki/Weibull_distribution : "..... the Weibull distribution gives a distribution for which the failure rate is proportional to a power of time......"
The Weibull parameters are estimated by the function wblpdf() in the Statistics and Machine Learning Toolbox: http://www.mathworks.com/help/stats/wblpdf.html?s_tid=srchtitle

카테고리

Help CenterFile Exchange에서 Exploration and Visualization에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by