I understand that 'fminsearch' does not converge to a solution even though the objective function does not change value. One possibility is that the command window output display format default is short, fixed-decimal format for floating-point notation. Hence, the objective function value might be changing but you cannot see that change in the command window.
A possible workaround is to change the precision of the data displayed for the optimal objective function value. You can use 'Output Functions' to customize the output data from the optimization problem at each iteration.
To do this, follow the following steps:
1. Change the command window format display to 'long', so that you can see the maximum number of digits of your variable. You can do this by adding the following command to your script before calling the optimization function.
2. Set the 'Output Function' up. You specify the output function in options, such as
>> options = optimset(options,'OutputFcn',@outfun);
4. Use the 'disp' command to display the objective function's value.
I hope this helps,