Error using a function in App Designer, not returning the correct value.

29 views (last 30 days)
George Fryda
George Fryda on 1 Nov 2019
Commented: Jyotsna Talluri on 7 Nov 2019
I am attempting to create an fsolve function inside of an app in the App Designer tool.
methods (Access = private)
function Deceleration = SolveForDecel(~,UTF,HB,HT,L,LB,LT,WC,WT,PHI,CHI,PSI,PSIT)
fun = @(x) x*(1+PHI)*(1+WC/(WC+WT))/((1-PSI+x*CHI)-(WC/(WC-WT))*((1-PSIT)*LB/L+x*((HT/LT-HB/LT)*LB/L-HB/L)))-UTF;
x = fzero(fun,.1);
Deceleration = x;
methods (Access = private)
% Callback function: SolveforDecelerationButton, UIFigure
function UIFigureKeyPress(app, event)
valuefordecel = SolveForDecel(app,app.TireRoadfrictioncoefficientEditField.Value, ...
app.GroundhitchballEditField.Value, ...
app.GroundcgtrailerEditField.Value, ...
app.WheelbaseofcarEditField.Value, ...
app.RearaxlecarhitchballEditField.Value, ...
app.TraileraxlehitchballEditField.Value, ...
app.WeightofcarEditField.Value, ...
app.WeightoftrailerEditField.Value, ...
app.RearbrakeFtotalbrakeFEditField.Value, ...
app.cgheightcarwheelbaseEditField.Value, ...
app.rearaxlenotrailerweightEditField.Value, ...
app.DecelerationofCombinationEditField.Value = valuefordecel;
I believe the event is being triggered, and then it runs into an issue in the Fsolve (these are the outputs):
Exiting fzero: aborting search for an interval containing a sign change
because NaN or Inf function value encountered during search.
(Function value at -1.15052e+308 is NaN.)
Check function or try again with a different starting value.
Error using matlab.ui.control.internal.model.AbstractNumericComponent/set.Value (line 185)
'Value' must be a double scalar within the range of 'Limits'.
Error in Trailer_Dynamic_Simulation_Model/UIFigureKeyPress (line 79)
app.DecelerationofCombinationEditField.Value = valuefordecel;
Error using matlab.ui.control.internal.controller.ComponentController/executeUserCallback (line 335)
Error while evaluating Button PrivateButtonPushedFcn.
I am at a loss to determine exactly what the solution is. When I manually run through the function in the command window with realistic values it solves to .3014, which makes sense.
The error it is reading out in App Designer is:

Sign in to comment.

Answers (1)

Jyotsna Talluri
Jyotsna Talluri on 6 Nov 2019
The possible cause of error may be because of using 'Edit Field(Text)' instead of 'Edit Field (Numeric)'.Make sure you are using the 'Edit Field(Numeric)'.It worked for me when I reproduced it with your given inputs and equation as shown in the attched figure
Jyotsna Talluri
Jyotsna Talluri on 7 Nov 2019
If you are declaring the inputs through the Numeric edit fields ,the it should work fine.Can you share the entire code in a .m file and the app layout screenshot so that I can check once?

Sign in to comment.




Community Treasure Hunt

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

Start Hunting!

Translated by