Fit to find the value of an unknown parameter

1 view (last 30 days)
Hi. I want to determine the value of a paramter (H) using a fit to measurements. I am assuming a list of H values.
A=0.1;
B=0.5;
C=100;
x; % x - coordinates
P1; % Measured data
H=0.0001:0.00005:0.05; % Assuming some values of H
for i=1:length(H)
i
P2=H(i)*(((1/A)*log(x.*H(i)/C))+B); % Estimation
R2(i)=rsquared(P1,P2) % Calculating the R2 value using rsquared function
end
I want the same number of P2 estimations as the number of assumed H values. I don't get it here. I want to save the values of R2 and select the value of H which gives R2=0.95.

Accepted Answer

Stephan
Stephan on 24 Mar 2020
Try to optimize with least squares:
A=0.1;
B=0.5;
C=100;
% Range for H
lb = 0.0001;
ub = 0.05;
best_H = fminbnd(@(H)sseval(H,x,P1,A,B,C),lb,ub)
P2 = best_H*(((1/A)*log(x.*best_H/C))+B)
function sse = sseval(H,x,P1,A,B,C)
sse=sum((H*(((1/A)*log(x.*H/C))+B)-P1).^2);
end
see also:
  3 Comments

Sign in to comment.

More Answers (0)

Categories

Find more on Statistics and Machine Learning Toolbox in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!