|
|
Problem bei "senden" von Vektoren innerhalb des GU |
|
Dracotin |
Forum-Anfänger
|
|
Beiträge: 13
|
|
|
|
Anmeldedatum: 14.01.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2008a
|
|
|
|
|
|
Verfasst am: 12.10.2012, 14:19
Titel: Problem bei "senden" von Vektoren innerhalb des GU
|
|
|
|
|
Hallo,
ich habe ein Programm geschrieben, was einen Datensatz einließt, Störfrequenzen herausfiltert, dann die Nullstellen exakt berechnet, die Stellen, falls sie im Zeitvektor noch nicht vorhanden sind einfügt und sie dann inklusive der Messaufnahme mit roten Kreisen Plotet.
Das funktioniert soweit schon mal, jetzt habe ich nur ein Problem.
Der Datensatz fasst ca. 2 Millionen Messpunkte und dementsprechend lange dauert es den Datensatz einzulesen, außerdem habe ich 3 Parameter, die man anpassen kann, um den Datensatz anders filtern zu lassen und einige Optionen für die Anzeige des Histogramms ect.
Jetzt wollte ich ein GUI erstellen, was wenn man es startet den Datensatz einließt (was dann halt ein bisschen dauert) und dann kann man über diesen Datenvektor frei verfügen und ihn mit den Genannten Parametern, die ich über Editboxen ändern will, manipulieren und den mit den neuen Parametern erstellten Datensatz neu plottet und ein Histogramm erstellt.
Dafür habe ich quasi das einlesen in den Start des GUI gesetzt und den gesamten Rechen und Plotprozess auf einen Pushbutton gelegt.
Jetzt habe ich nur das Problem, wie sende ich den Datenvektor an den Pushbutton, damit ich ihn da verwenden kann?? Einzelne Zahlen über get und set als string übergeben ist okay, aber einen ganzen Vektor? Ich habe mir schon überlegt, jede einzelne Zahl als eine Variable zu speichern und diese zu senden, aber da rechnet sich der Rechner ja tod...
Gibt es dafür einen Befehl?
Viele Grüße
Draco
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 12.10.2012, 19:25
Titel:
|
|
Hallo,
mir ist nicht ganz klar, was du meinst. Falls es aber um die Übergabe von Daten zwischen verschiedenen Teilen der GUI geht, sollte diese Seite helfen:
http://www.mathworks.de/de/help/mat.....-data-in-a-guide-gui.html
Der Weg mit setappdata / getappdata ist meines Erachtens der sauberste.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Dracotin |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 13
|
|
|
|
Anmeldedatum: 14.01.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2008a
|
|
|
|
|
|
Verfasst am: 15.10.2012, 11:44
Titel:
|
|
|
|
|
Hey,
danke schon mal, aber irgendwie funktioniert es nicht wirklich damit.
Nochmal zur Erklärung
Ich lese beim Start des Programms einen Datensatz ein, der in einen Vektor gespeichert wird. Da dieser Vektor ca 1 Mio. Zeilen besitzt und das Einlesen extrem lange dauert, würde ich das ganze gerne etwas komfortabler gestalten, indem ich beim Start diesen Datensatz einlese und die Weitere Berechnung über einen Startbutton starten. Diese Daten sollen mit vorgegebenen Werten Gefiltert werden, es soll einstellbar sein, ab wann die Berechnung starten soll und in wieviel Schritten das Histogramm aufgelößt werden soll.
Es gibt 2 Plots. Den Plot des Signals und den des Histogramms. Das Histogramm zeigt die Häufigkeit der vorkommenden Zeitabschnitte der Perioden.
Und eben dieser Vektor des Datensatzes, den will ich an den Startbutton schicken, damit ich die oben beschriebenen Parameter nach dem Einlesen immer wieder Ändern kann und sofort ein Ergebnis angezeigt bekomme, ohne in die Datei selbst zu gehen, die Parameter an zupassen und die lange Berechnung wieder ab zuwarten.
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 15.10.2012, 15:05
Titel: Re: Problem bei "senden" von Vektoren innerhalb de
|
|
Hallo Dracotin,
Daten mit 2 Millionen Punkten gelten im Allgemeinen nicht als groß. Ich vermute, man kann die Effizienz Deiner Einlese-Funktion drastisch verbessern.
Zitat: |
Einzelne Zahlen über get und set als string übergeben ist okay, aber einen ganzen Vektor? |
Dies ist mit ein Rätsel. Wohin übergibst Du einzelne Zahlen per GET oder SET?
Man kann einen Vektor, auch einen mittelgroßen mit 16MB-Speicher-Bedarf, entweder in den UserData der Figure oder per GUIDATA in den ApplicationData der Figure speichern. Letzteres geht auch direkt mit den Befehlen SETAPPDATA und GETAPPDATA.
Dabei ist es ganz egal, ob es sich um eine Zahl oder ein großes Array handelt, da Matlab beides vollkommen gleich behandelt. Deshalb wird mir Dein Problem nicht klar.
Gruß, Jan
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 15.10.2012, 17:25
Titel:
|
|
Hallo,
Zitat: |
aber irgendwie funktioniert es nicht wirklich damit. |
Diese Aussage ist nicht hilfreich. Was genau hast du probiert, und was genau hat daran inwiefern nicht funktioniert?
Ansonsten stimme ich Jan zu: das Einlesen von 1 Mio. Werten sollte nicht "extrem lange" (was bedeutet das für dich?) dauern. Woher kommt dieser Vektor denn?
Textbeschreibung sind oft deutlich weniger aussagekräftig als ein Codebeispiel. Bitte also nach Möglichkeit den relevanten Code posten.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
|
|
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.
|
|