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

Problem mit plot performance

 

emanuelarth
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 13.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.04.2017, 13:15     Titel: Problem mit plot performance
  Antworten mit Zitat      
Hi Leute,

ich habe folgendes Problem:

Ich habe eine GUI erstellt in welcher ich bestimmte Werte berechne und außerdem Daten plotte.

Ich hatte das Skript vorher ohne GUI geschrieben und nun für die GUI nochmal umgeschrieben. Hier werden Daten in eine Tabelle eingetragen und beim Klick auf einen Berechnungsbutton herausgezogen und damit gerechnet.
Ich habe zudem eine Schrittweite mit der die Genauigkeit der Plots eingestellt wird. Es handelt sich dabei um ein dx innerhalb eines Intervalls)
Das Problem ist, dass ich bei meinem Code ohne GUI Problemlos 270.000 Werte über 270.000 Werte mit dem area Befehl plotten konnte.(Der fill befehl funktioniert auch)
Bei der GUI ist das nun anders.

bei 2700 auf 2700 Werte funktioniert alles Problemlos. Sobald ich aber den Faktor um 10 erhöhe(mein dx von 0.001 auf 0.0001) funktioniert nichtsmehr. Matlab hängt sich völlig auf, die Gui ist nichtmehr verschiebbar und ich muss 5 Minuten warten bis ich wieder irgendetwas klicken kann.
Sobald ich den area Plot wieder rausnehme und nur die anderen Daten plotte kann ich mein dx ohne weiteres auf dx=0.000001 stellen. Es liegt also an dem area Befehl (fill geht hier auch nichtmehr).

Die Zahlen die im Skript ohne GUI und mit GUI geplottet werden sind vom Typ und vom Wert komplett identisch.
Hat jemand eine Idee woran das liegen kann?

Achja... wenn ich die 5 Minuten abwarte kommt auch das richtige raus. Es dauert nur ewig. Bei dx=0.001 braucht die Gui nichteinmal eine Sekunde. Bei dx=0.0001 dann plötzlich 5 Minuten. Ich hatte mich auch an die 0.0001 herangetastet indem ich immer ein wenig erhöht hatte. Bei 0.0002 funktionierte es auch noch flott. Ich finde nur den Zusammenhang nicht wieso der area Befehl genau bei diesem dx Wert( und niedrigeren) nichtmehr funktioniert. Ziehe ich mir die Vektoren die ich plotten will heraus und plotte sie über das Command Window funktioniert auch alles problemlos.


Hat jemand Vorschläge?
Vielen Dank
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.04.2017, 15:16     Titel:
  Antworten mit Zitat      
Hallo,

ein reproduzierbares Beispiel wäre hilfreich.
In welcher Version arbeitest du? Verwendest du GUIDE, App Designer, oder uicontrol - Befehle zum Erstellen der GUI?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
emanuelarth
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 13.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.04.2017, 12:33     Titel:
  Antworten mit Zitat      
Hi,

ich verwende Maltlab R2013b und für das Erstellen der GUI benutze ich GUIDE.

Das Mit dem Beispiel ist ein wenig schwierig. Mittlerweile sind es 1400 Zeilen Code und die Daten die geplottet werden tauchen immer wieder auf. Ist also schwer da was rauszunehmen zum erklären.

Vielleicht ein anderer Ansatz. Das plotten der Fläche dient nur der Übersichtlichkeit.
Mein eigentliches Vorhaben war folgendes: Ich habe eine Normalverteile Funktion, welche ich auch geplottet habe. (Der Linienplot ging problemlos)
Da ich von dieser Normalverteilung ein bestimmtes Intervall farblich markieren wollte, habe ich in diesem Intervall die Funktionswerte der Verteilung genommen und sie mit dem area Befehl geplottet.

Ich weiß nicht ob folgendes möglich ist, jedoch würde es auch den Zweck erfüllen und den area plot umgehen:


Beispiel:


interv1=(-2:0.0001:2) %Intervall in dem meine Normalverteilung geplottet werden soll
%y sind die Funktionswerte der Normalverteilung im Intervall interv1

plot(interv1,y) %Hier wird die Normalverteilung geplottet


Nun möchte ich dass der Bereich unter meiner Kurve und im Intervall zwischen -1 und 1 eingefärbt wird.
Gibt es dafür einen Matlab Funktion? Wenn nein, wie kann ich dann den area Befehl umgehen? (Fill habe ich auch schon probiert. Geht mit den Funktionswerten auch nicht)

Ich würde wie gesagt lieber den area Befehl umgehen, da mich das Suchen des Fehlers bei diesem relativ großen Skript zu viel Zeit kosten würde (Zumal es nur um eine grafische Veranschaulichung geht). Wie ich das Intervall also einfärbe ist mir im Grunde genommen egal.

Vielen Dank Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
emanuelarth
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 13.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.05.2017, 12:19     Titel:
  Antworten mit Zitat      
Hi, bin nochmal ein wenig weitergekommen bei meinem Problem:

Ich habe nun unter den plot Befehl in meiner GUI (der keine Flächen mehr plotten kann) eine function geschrieben, die mir die selben Daten in eine extra Figure plottet. Das funktioniert problemlos...
Wenn ich also meine Werte mit area(handles.axes1,x,y) in meine GUI plotten will hängt der Rechner sich auf.
Wenn ich in eine figure plotte (Mit den selben Werten): area(x,y) dann funktioniert es.

Ist es dann möglich diese figure in meine GUI zu schreiben? Also dass ich dann auf das plotten in meine GUI verzichte, sondern nur die figure über den set Befehl in meine GUI setze.
Ich kenne nur leider den Befehl(sofern es ihn gibt) nicht.

set(handles.axes1,figure1)


sowas in der Art hätte ich mir vorgestellt. Gibt es so einen Befehl?

Vielen Dank
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.