WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Warning bei scrollplot Funktion aus FEX

 

DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 26.02.2016, 18:14     Titel: Warning bei scrollplot Funktion aus FEX
  Antworten mit Zitat      
Hallo goMatlab Forum,

ich habe ein kleines Problem mit der Funktion scrollplot aus dem File Exchange:

http://www.mathworks.com/matlabcent.....lplot-scrollable-x-y-axes

Ich habe auch schon bereits den Autor kontaktiert, welcher mir seine Hilfe nur bei einer Überweisung von $200 angeboten hat Shocked. Da ich diese Funktion für ein open source Projekt verwenden möchte, welches ich rein privat erstelle, bin ich nicht bereit diese Summe zu zahlen.

Die Warnung...

Zitat:

Warning: Negative limits ignored
> In scrollplot>getCenterCoord at 1292
In scrollplot>addScrollPlot at 366
In scrollplot at 163
In scrollplot_test at 7
Warning: Negative limits ignored
Warning: Negative limits ignored



erhalte ich nur bei semilogx oder loglog plots. Hier ein kleines Testbeispiel:

Code:

figure(1)
axh = gca;
semilogx(axh,1:10000,randn(1,10000))
grid on
grid minor
% start scrollplot with specific range
scrollplot(axh,'axis','xy','MinX',1000,'MaxX',3000,'MinY',-1,'MaxY',1)
 


Die Angaben MinX etc. sind zur festlegung eines Zoomfensters beim Start der Funktion. Aber auch ohne diese Angaben kommt die Warnung. Allerdings verwundert mich auch schon die Zeilenangabe etwas.

Wenn ich einen Breakpoint in Zeile 357 setze...

Code:
set(hScroll, limStr, lim+smallDelta*[-1.2,1.2]);

% hScroll = axes object
% limStr = XLim oder YLim
% lim = [1 10000] + some delta -> [-119 10120]
 


erscheint schon nach dessen Ausführung die Warnung und nicht erst bei Zeile 366.

Code:
hText = text(xText,yText,msg, 'Color','r', 'Rotation',rotation, 'HorizontalAlignment','center', 'FontSize',9, 'FontWeight','bold', 'HitTest','off', 'tag','scrollHelp');  %#ok ret val used for debug
 



Evtl. hat ja jemand von euch eine Idee warum xlim([-119 10120]), denn nichts anderes steht hinter der set() Zeile, zum Problem wird.

Schon mal Vielen Dank für eure Hilfe!

Gruß DSP
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.02.2016, 21:11     Titel:
  Antworten mit Zitat      
Hallo,

ich kann sowohl dich als auch Yair gut verstehen. Ich habe mir das mal eine Viertel- oder halbe Stunde angesehen und kann weder Ursache noch Lösung des Problems erkennen. Vor allem ist ja die Warnung noch das kleinste Problem: die Balken lassen sich bei mir dann auch nicht verziehen.

Falls du nicht auf logarithmische Plots verzichten möchtest, wäre mein Vorschlag, selbst eine kleine Lösung zu machen, z.B. einen Slider für den Anfangspunkt und einen für den Bereich. Sieht zwar nicht so cool aus, aber sollte mit vertretbarem Aufwand machbar sein.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 27.02.2016, 23:49     Titel: Re: Warning bei scrollplot Funktion aus FEX
  Antworten mit Zitat      
Hallo DSP,

Ich fasse mal den Code zusammen:
Code:
semilogx(1:10000,randn(1,10000))
xlim([-119 10120])

Dies ergibt auch bereits die entsprechende Warnung:
Zitat:
Warning: Negative limits ignored

Sie liegt daran, dass in einer logarithmischen Skala negative Werte sinnfrei sind. So weit ich es verstehe, liegt das Problem also nicht an "scrollplot".

Die Warnung erscheint beim Debuggen früher, weil sie erst beim drawnow getriggert wird. Beim Debuggen geschieht das aber auch beim erreichen des Breakpoints.

Da die negativen Limits das Problem sind, könnte man scrollplot so modifizieren, dass es bei logarithmischen Skalen
Code:
set(hScroll, limStr, max(0, lim + smallDelta*[-1.2,1.2]));

Inwiefern das Auswirkungen auf andere Teile des Codes hat, kann ich nicht einschätzen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Themenstarter

Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 27.02.2016, 23:58     Titel:
  Antworten mit Zitat      
Hallo Harald,

erstmal vielen Dank das du es dir angsehen hast. Bei mir lassen sich in dem Beispiel beide Fenster ziehen. Das y-Zoomfenster geht auch einwandfrei. Wenn ich jedoch das x-Zoomfenster nach links oder rechts ziehe, landet es bei ganz kleinen/großen Zahlen und lässt sich dann nicht mehr bewegen.

Auf eine log Darstellung kann ich nicht verzichten. Da der User linear oder log Skalierung auswählen kann, könnte ich sonst für die log Darstellung scrollplot deaktvieren. Aber das wäre auch nur eine Notlösung.

Ich habe ja auch noch die einfachen Zoom In/Out Funktionen, welche aber einfach in der Bedienung umständlich sind und man eben nicht sieht wo man sich befindet.

Meine Idee wäre sonst noch slider am Rand von axes zum Bewegen in x- und y-Richtung anzubringen. So wie hier: http://www.mathworks.com/matlabcent.....xchange/26318-demo-slider

Im Moment werde ich mich erstmal um die anderen Probleme/aufgaben bei meinem Tool kümmern und evtl. mich später nochmal mit scrollplot auseinandersetzen.

Gruß DSP
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Themenstarter

Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 28.02.2016, 00:47     Titel:
  Antworten mit Zitat      
Hallo Jan,

an diesen Weg hatte ich auch schon gedacht. Allerdings habe ich ein alternatives max von 0.1 genommen, da ja log10(0) = -Inf auch keinen Sinn macht. Nur wird dann das y-Zoomfenster nicht richtig gesetzt und das x-Zoomfenster ist nach wie vor unkontrollierbar und man landet bei einer minimalen Mousebewegung wieder bei einem sehr kleinen oder großen x-Wert.

Gruß DSP
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.