|
|
|
Problem mit plot performance |
|
| emanuelarth |

Forum-Anfänger
|
 |
Beiträge: 10
|
 |
|
 |
Anmeldedatum: 13.11.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.04.2017, 13:15
Titel: Problem mit plot performance
|
 |
| |
 |
|
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
|
|
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 24.04.2017, 15:16
Titel:
|
 |
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
|
|
|
|
| emanuelarth |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 10
|
 |
|
 |
Anmeldedatum: 13.11.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 25.04.2017, 12:33
Titel:
|
 |
| |
 |
|
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
|
|
|
|
| emanuelarth |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 10
|
 |
|
 |
Anmeldedatum: 13.11.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.05.2017, 12:19
Titel:
|
 |
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
|
|
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|