Xlim error in App designer
    2 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    

% Value changing function: STARTKnob_2
function STARTKnob_2ValueChanging(app, event)
arguments
    app
    event.Value(1,1) {mustBeNumeric}=0 
end
app.StartYear = event.Value;
if app.StartYear>app.StopYear-1 %checks the increasing-xrule
    app.StopYear=min([app.StartYear+1,app.STOPKnob.Limits(2)]);
    app.STOPKnob.Value=app.StopYear; %rotate the stop knob
    app.StartYear=app.StopYear-1;
    app.STARTKnob_2.Value=app.StartYear;
end
app.plotData();
end
% Value changing function: STOPKnob
function STOPKnobValueChanging(app, event)
arguments
    app
    event.Value(1,1) {mustBeNumeric}=0 
end
app.StopYear = event.Value;
if app.StopYear<app.StartYear+1
    app.StartYear=max([app.StopYear-1 app.STARTKnob_2.Limits(1)]);
    app.STARTKnob_2.Value=app.StartYear;
    app.StopYear=app.StartYear+1;
    app.STOPKnob.Value=app.StopYear;
end
app.plotData();
4 Commenti
  VBBV
      
      
 il 26 Mar 2025
				
      Modificato: VBBV
      
      
 il 27 Mar 2025
  
			@Mukesh if you dont want the default values of xlim to be used,
 then inside the function plotData  you need to put the xlim line with manual first which will override the default values.
function plotData(app)
xlim(app.UIAxes, 'manual') % put this line first 
%app.StarYear.Value = event.Value
%app.StopYear.Value = event.Value
xlim(app.UIAxes, [app.StartYear.Value app.StopYear.Value])
Risposta accettata
  Image Analyst
      
      
 il 22 Mar 2025
        You need to debug your program.  See
After that, when you see an error that says the limits of the min and max values you're passing into xlim must be increasing values, you'll know how to check their values.  What you need to do is set a breakpoint at xlim and hover over app to see what the values of StartYear and StopYear are.  Or else just put them in the code right before xlim
app.StartYear
app.StopYear % No semicolons!
xlim(app.UIAxes, [app.StartYear, app.StopYear])
What are their values?
7 Commenti
  Image Analyst
      
      
 il 23 Mar 2025
				
      Modificato: Image Analyst
      
      
 il 23 Mar 2025
  
			So I assume that means you want the same start and stop values over multiple sets of data, instead of adjusting it on a vector-by-vector basis.  But you're evidently setting them both to the same value.  
Does your app have a startupFcn?  If not, add one and set the app.Start and Stop to some default values.  Or else use isempty() when you're trying to turn the knobs or plot data to make sure the start and stop values are not null.
Can you attach your GlobalTemp.mlapp so that I can fix it?  Also a set of data if one is needed to run the program.
Più risposte (1)
  Walter Roberson
      
      
 il 22 Mar 2025
        You do not provide initial values for app.StartYear or app.StopYear, so they are initialized to [] (the empty vector)
Then when you test
if app.StartYear>app.StopYear-1
then app.StartYear = event.Value might have given a value to app.StartYear, but app.StopYear is still [] and testing (Value>[]) is false.
3 Commenti
  Walter Roberson
      
      
 il 23 Mar 2025
				It is not an error to calculate with [] . 
(It is typically an error to try to store [] into indexed locations. Not always though.)
With it not being an error to calculate with [], the error is not encounted until the call to
xlim(app.UIAxes, [app.StartYear app.StopYear])
with app.StopYear being [] the above call would collapse to
xlim(app.UIAxes, [app.StartYear []])
which would be
xlim(app.UIAxes, app.StartYear)
which would error because the input vector is only length 1.
Vedere anche
Categorie
				Scopri di più su Develop Apps Using App Designer in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



