Fittype - Fitting Curve and Starting Point

조회 수: 15 (최근 30일)
Detox
Detox 2017년 6월 9일
댓글: Detox 2017년 6월 10일
Hello guys. I used the following code in order to get the coefficients of King's law for Hot-Wire Anemometry.
The form of this equation is "E^2 = A + B*u^n" where n is given in my example. E and u are already defined as vectors. Now how can I use "fittype" considering that n is given and where can I define it? Furthermore how do I have to define my startpoint for this method?
start = [3;0.5;0.45];
up = [inf;inf;inf];
low = [-inf;-inf;-inf];
options = fitoptions('Method','NonlinearLeastSquares','Upper',up,'Lower',low,'Display','iter','TolFun',10^-10,'TolX',10^-10,'StartPoint',start);
f = fittype('sqrt(A+B*x^n)');
res1 = fit(u,E,f,options)
  댓글 수: 5
John D'Errico
John D'Errico 2017년 6월 9일
편집: John D'Errico 2017년 6월 9일
READ THE ERROR MESSAGE!!!!!!! Of course it works.
If n is fixed and known, which is what you claim, then you have TWO parameters. NOT 3. But you have set THREE bounds, and THREE starting values.
If you want to estimate n, then do so. But then you cannot have it also fixed and known. So what do you really want to do?
Detox
Detox 2017년 6월 9일
편집: Detox 2017년 6월 9일
Yeah I know what you mean. But the question was also regarding the StartPoint. Considering I just use 2 points as you mentioned, how do I set my 2 StartPoints?
Edit: Got it now. Deleted the last point in my StartPoint Matrix as well as in the up and low matrices. Could you just clarify what my vector StartPoint does? I randomly have chosen those values and it looks good compared to my experimental data. Thank you very much for your answer and efforts :)

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

답변 (1개)

John D'Errico
John D'Errico 2017년 6월 9일
편집: John D'Errico 2017년 6월 9일
Ok. Think of an optimizer as a blind man placed on the surface of the earth, then tasked with finding the lowest point of elevation. Yes, we know that to be a trench in the Pacific ocean, but he needs to find his way there.
All this fellow can do is look around locally, as well as remember what he has learned about the surface from previous tests with his cane. Am I pointing downhill? Is this a good direction to search? If so, he tries walking in some direction. At some point, he will decide that he has gone far enough, and he needs to search around him again. Now which direction looks like a good way to go?
Yes, I know, this is a rather difficult job for a blind man to be given. But we are paying him quite well. I do hope we remembered to give him SCUBA gear, as he may need it before he is done. :)
I think you can imagine why it would be important to start him out near the true solution. Otherwise, he may get stuck in some locally low spot. For example, start out near the dead sea, and while he will get wet at the end, there are lower points of elevation, if he just got started in a better place. But once in a local minimizer, it can be essentially impossible to escape, since all directions look to be uphill.
Starting values are just that - where do we set the fellow down to start? For this task, the Pacific ocean might be a good start. A really good submarine will help too. If instead, you set him down in the Himalayas, you may well find he gets stuck in a frozen lake in some random valley.
So how does this impact how you choose starting values? You should know something about your problem. Hey, it is your problem, and your data! In the example function, here with n==3:
sqrt(A+B*x^3)
what do A and B mean? For example, suppose that B is negative? For positive x, then your function is a decreasing function. If your data is increasing as x increases, then B should be a positive number! So you probably know something about at least the sign of B. Again, if you don't, then it is time to plot your data and think about the model. There are similar inferences you can make about A.
By the way, with a model like this, be careful that the optimizer does not try to look in a place where it starts generating complex numbers. That will confuse it. Bad values of A and B could cause that to happen. So use bound constraints where necessary, to avoid bad stuff happening.
What might be reasonable values for A and B? Random numbers for a start point are a great way to start that poor fellow down in the Himalayas, or perhaps a patch of Amazon rain forest, or the Dead Sea. At least give the guy a chance of success.
  댓글 수: 1
Detox
Detox 2017년 6월 10일
Awesome explanation! Thanks :)

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

카테고리

Help CenterFile Exchange에서 Linear and Nonlinear Regression에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by