MATLAB Answers

Fit to find the value of an unknown parameter

2 views (last 30 days)
Tomer
Tomer on 24 Mar 2020
Commented: Tomer on 25 Mar 2020
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.

  0 Comments

Sign in to comment.

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

Tomer
Tomer on 24 Mar 2020
Hi, thanks for your help. I didn't follow the synatx above. When I ran it, it gave the follwoing error.
Error in sseval (line 2)
sse=sum((H*(((1/A)*log(x.*H/C))+B)-P1).^2);
Error in @(H)sseval(H,x,Pa,A,B,C)
Error in fminbnd (line 233)
x= xf; fx = funfcn(x,varargin{:});

Sign in to comment.

More Answers (0)