Ozzy

Joined 25 March 2015
887 bytes added ,  29 March 2015
Line 100: Line 100:
where each of the coordinates of {{codeline|y}} lies within {{codeline|alpha}} confidence interval (normal distributed error assumed). Out of all possible {{codeline|x}} the one with the highest entropy is chosen. {{codeline|info}} describes the convergence of the algorithm. The other returned parameters will describe final gradients, Hessians and Lagrange's coefficient.
where each of the coordinates of {{codeline|y}} lies within {{codeline|alpha}} confidence interval (normal distributed error assumed). Out of all possible {{codeline|x}} the one with the highest entropy is chosen. {{codeline|info}} describes the convergence of the algorithm. The other returned parameters will describe final gradients, Hessians and Lagrange's coefficient.


* another version would be defined for a non-linear function. The declaration would very similar
* the second calling form would be defined in a similar way, but with the transformation defined in the means of function provided by the user. The declaration would be:
{{Code|Functional problem declaration|<syntaxhighlight lang="octave" style="font-size:13px">function [x,info,...]=maxent(y,fun,sigma,alpha=0.95, model=1, optset)
{{Code|Functional problem declaration|<syntaxhighlight lang="octave" style="font-size:13px">function [x,info,...]=maxent(y,tfun,sigma,alpha=0.95, model=1, optset)
 


</syntaxhighlight>}}
</syntaxhighlight>}}


All the parameters have the similar meaning here, and the new parameter {{codeline|fun}} is the handle to a function which accepts vector argument, which describes the problem to be inverted. This time the returned value should obey  
All the parameters have the similar meaning here, and the new parameter {{codeline|tfun}} is the handle to a function which accepts vector argument, which describes the problem to be inverted. This time the returned value should obey  


<math> y \approx f(x)</math>
<math> y \approx \mbox{tfun(x)}</math>


It is convenient to have this version of the algorithm for problem where obtaining the transformation matrix is difficult to compute or affects performance (think fft). The algorithm is expected to give good results for linear functions. For not-too-complicated non-linear cases the chances are still there.
It is convenient to have this version of the algorithm for problem where obtaining the transformation matrix is difficult to compute or affects performance (think fft). The algorithm is expected to give good results for linear functions. For not-too-complicated non-linear cases the chances are still there.


Additional  work will be put to provide some wrapper functions to allow the user quickly use MEM in their problem. This includes function for 1D and image deconvolutions, time series components analysis, power spectral estimation and other applications I will be able to find in Matlab or other computational software.
* the third version would be the most general one. Here, the chi-squared criterium used as the objective function can be substituted with an arbitrary function provided by the user (it should be a convex function to guarantee the uniqueness of the solution). The calling form would be
{{Code|Functional problem declaration|<syntaxhighlight lang="octave" style="font-size:13px">function [x,info,...]=maxent(objfun,aim, model=1, optset)
 
</syntaxhighlight>}}
 
The arguments {{codeline|objfun}} and {{codeline|aim}} are the objective function and a value of the objective function the algorithm should try to attain. The algorithm will try find {{codeline|x}} such that
<math> \mbox{aim} \approx \mbox{objfun}(x)  </math> and the entropy is the highest out of all the solutions with this property.
 
 
Additional  work will be put to provide some wrapper functions to allow the user quickly use MEM in specific problems. This includes function for 1D and image deconvolutions, time series components analysis, power spectral estimation and other applications I will be able to find in Matlab or other computational software.


Another sub-task is to analyze the speed and numerical precision of the implemented algorithms.
Another sub-task is to analyze the speed and numerical precision of the implemented algorithms.
Line 121: Line 129:
***''development of the algorithm in matrix version with future extension in mind''
***''development of the algorithm in matrix version with future extension in mind''
** Midterm evaluation
** Midterm evaluation
***''upgrading the matrix algorithm to accept function handle argument''
***''upgrading the algorithm to accept the arbitrary objective function''
***''stability tests''
***''stability tests''
***''identification of the remaining issues''
***''identification of the remaining issues''
46

edits