Solving misfit using both L1 and L2 norm

Hi,
I have observed data and a vector "Pmodel ", which I am calculating following one equation. Now I need to have L1 norm and L2-norm solution of the difference between the observed and calculated parameter. Below, I followed the logic. Am I correct in this sense, kindly suggest.
----------------------------------------------
for i=1:length(s)
for j=1:length(h)
P_Model=C-(2.*v.*m_h(j))-(m_s(i).*log(v)); %Model
P_Obs=data(:,1);
Error(i,j)=sqrt(sum( sum( ((P_Model-P_Obs)).^2 ) )) %misfit calculation with L2 norm
Error(i,j)=sum(abs(P_Model-P_Obs)) %misfit calculation with L1 norm
end
end
------------------------------------------------------------------------------------------------------------------
Answer will be highly appreciated. Kindly suggest alternative if this is not correct apporach.
Thanking you in anticipation.

6 Comments

Since we don't know size and meaning of the variables involved, we cannot tell whether your code is correct.
But since P_Model seems to be a scalar and P_observed is a column vector, I guess no.
Hi Torsten,
Thank you for the quick reply.
Both the variables are exponentially decaying and the size is 49×1. I am trying to get a minimum value of the misfit function with some assumption on constant C.
Why do you get Error(i,j) ? What is s ? What is h ? What is the loop intended to do - calculate the error after parameter fitting ?
Please explain in more detail.
I am computing the residual (error) between the modeled and observed value, which I need to minimize using L1 and L2norm solution. This is an inverse problem. 's' and 'h' are two paramters that we want to get finally through this minimization. The values of s and h for which we will get minimum of the error will be the solution of the problem (Please refer to the figure attached; here x axis is 's' and y axis is P_Model / P_Obs). The loop is for having various possible values of 's' and 'h' to fit the data. Hope this clears your doubt. Please sugest whether my approach is correct or not.
Thank you.
Instead of searching for optimal s and h in a loop, use lsqcurvefit to fit your parameters (and minimize the error).

Sign in to comment.

Answers (0)

Products

Asked:

on 21 Jun 2022

Commented:

on 21 Jun 2022

Community Treasure Hunt

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

Start Hunting!