Help with a fit
이 질문을 팔로우합니다.
- 팔로우하는 게시물 피드에서 업데이트를 확인할 수 있습니다.
- 정보 수신 기본 설정에 따라 이메일을 받을 수 있습니다.
오류 발생
페이지가 변경되었기 때문에 동작을 완료할 수 없습니다. 업데이트된 상태를 보려면 페이지를 다시 불러오십시오.
이전 댓글 표시
0 개 추천
Hello! I have a set of data (x,y) which describes a function y=f(x). I would like to fit this function with a biexponential function made like this : f(x) = a*exp(-x/b)+c*exp(-x/d)+e and retrieve the values of a,b,c,d,e. Can you help me to do this? Thank you!
채택된 답변
Mischa Kim
2014년 3월 21일
편집: Mischa Kim
2014년 3월 21일
0 개 추천
Aurc89, does this help?
a = 1; b = 1; c = 1; d = 1; e = 1;
x = (0:0.1:2)';
y = a*exp(-x/b)+c*exp(-x/d)+e + 0.1*rand(length(x),1);
f = fit(x,y,'exp2');
plot(f,x,y)
The fitting coefficients are accessed, e.g., via
f.a
댓글 수: 8
aurc89
2014년 3월 21일
Sorry, maybe I couldn't explain well... I already have both x and y data which describes a generic function y(x), different from f(x). Then I want to fit my data y=y(x) with the function f(x) = a*exp(-x/b)+c*exp(-x/d)+e and retrieve a,b,c,d,e coefficients.
Mischa Kim
2014년 3월 21일
I got that, I just made up x- and y-values to show the feature in action. So essentially you only need the fit command. Coefficients are retrieved as outlined above, f.a, f.b, etc.
aurc89
2014년 3월 21일
Ok, but there is something I don't understand: I write this code, where x and y are my data I want to fit:
---------------------------------------------------
x=[1 2 3 4 5 6 7 8 9];
y=[0.4 0.6 0.8 0.9 0.92 0.94 0.96 0.98 0.989];
plot(x,y)
a=1; b=1; c=1; d=1; f=1;
x=x';
y = a*exp(-x/b)+c*exp(-x/d)+f+0.1*rand(length(x),1);
f = fit(x,y,'exp2');
figure
plot(f,x,y)
-----------------------------------------------------
This is the (x,y) plot (first plot)

while this is the fit (second plot)

which is not a fit of the first curve, i.e. of the raw data... what's wrong?
Mischa Kim
2014년 3월 21일
As mentioned above, if you have x- and y-values you only need the fit command:
x = [1 2 3 4 5 6 7 8 9];
y = [0.4 0.6 0.8 0.9 0.92 0.94 0.96 0.98 0.989];
f = fit(x',y','exp2');
plot(f,x,y)
John D'Errico
2014년 3월 21일
Note that in your examples, adding error created from rand is a terribly poor thing to do, as rand produced uniform deviates with a mean of 0.5. To generate random noise, use randn.
aurc89
2014년 3월 21일
Ah ok, so I don't need to specify the expression of the biexponential function... Thank you very much!
Mischa Kim
2014년 3월 21일
편집: Mischa Kim
2014년 3월 21일
Aurc89: You're welcome.
John: I was not trying to generate random noise, thanks for the polite pointer, though.
aurc89
2014년 3월 21일
Sorry, the last question: this kind of command gives me the fit with the function f(x) = a*exp(b*x) + c*exp(d*x). Instead, I woud like to have a fit with this kind of function: f(x) = a*exp(b*x) + c*exp(d*x) + g. I need the constant term g also, because the time constants of the biexponential changes with g (because I am differently close to zero axis by changing 'g', so b and d are different). Is there an authomatic way to do this? Thank you very much in advance
추가 답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Get Started with Curve Fitting Toolbox에 대해 자세히 알아보기
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
