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

Größere GUI zum Datenplotten

 

spiele-joe
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 28.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.03.2012, 17:49     Titel: Größere GUI zum Datenplotten
  Antworten mit Zitat      
Hallo,

ich bräuchte eure Hilfe bei einer Matlab-Gui, die ich studienbedingt zu realisieren habe.
Ausgangslage ist folgende:

Ich habe einen Ordner in welchem mehrere .txt-Dateien liegen, die ihrer Struktur nach identisch sind. Die Dateien besitzen jeweils einen Header und 3-dimensionale Daten.
In dem Header ist ein Zeitmarker enthalten, der mir angibt zu welchem Zeitpunkt die Datei aufgenommen wurde.
Über eine Gui möchte ich nun den Ordner, respektive die Daten laden und anschließend in zwei Fenstern einen 2-D und 3-D Plot erstellen.

Folgendes Konzept habe ich mir hierzu überlegt:
Vor jedem Plot ist eine bestimmte Auswahl zu treffen, die festlegt was überhaupt geplottet werden soll.
Für den 2-D-Plot (z gegen x) wäre das:
- Zeitpunkt der Messung (Info aus den Headern)
- y-Wert (x und z bei konst. y sollen anschließend geplottet werden) - die y-Werte sind bei allen Messungen konstant (also min/max und Intervall)
Die Angabe für den 3-D-Plot (z gegen x und y):
- Zeitpunkt der Messung (s.o.)
Außerdem sollen die Grenzen von x und y einstellbar sein (für beide Plots in einem).

Ich würde nun gerne folgendes machen.
1. Über einen Befehl den entspr. Ordner wählen und im gleichen Zuge die Zeitmarker auslesen und diese mit den Dateinamen in eine Matrix schreiben (dann hätte ich die entsprechende Verknüpfung geschaffen),
außerdem sollen die y-Werte gelesen und in eine Matrix geschrieben werden.
2. mittels Slidern auf die Zeit und y-Werte zugreifen, um den gewünschten Wert zu wählen (ist einfacher als ein ellenlanges Dropdown-Menü)
Insgesamt wären das 4 Slider:
- Zeitslider 2D
- y-Wert-Slider 2D
- Zeitslider 3D

Mit einem Klick auf "Plot 2D" und "Plot 3D" sollen anschließend geplottet werden und mit "Save Plot 2D" die jeweilige Auswahl in eine .txt exportiert werden ("Save Plot 3D" ist nicht notwendig, da das denn Rohdaten entspricht).

Soweit so gut. Meine erste Frage: Ist das überhaupt in dieser Art und Weise realisierbar?

Ich hab mich auch schon an so einigen Punkten probiert, bin jedoch zumeist sang und klanglos gescheitert.
Daher bin ich über jede noch so kleine Hilfe dankbar!

Vielen Dank
Johannes
Private Nachricht senden Benutzer-Profile anzeigen


Marco H.
Forum-Guru

Forum-Guru


Beiträge: 404
Anmeldedatum: 12.11.10
Wohnort: Dortmund
Version: 2010a/2012b
     Beitrag Verfasst am: 19.03.2012, 19:07     Titel:
  Antworten mit Zitat      
Hey,

sicherlich ist das möglich. Allerdings würde ich anstatt der Slider ehr zu Listboxen tendieren. In denen könntest du z.B. die Dateinamen der Textfiles reinschreiben. Das macht das etwas übersichtlicher. Mit uigetdir könntest du den Pfad der Dateien festlegen und diese dann einlesen.

Greetings
Private Nachricht senden Benutzer-Profile anzeigen
 
spiele-joe
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 28.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.03.2012, 10:46     Titel:
  Antworten mit Zitat      
Hey,

der Nachteil der Dateinamen ist allerdings, dass ich dann nicht weiß, zu welchem Zeitpunkt die Datei aufgenommen wurde und das ist die eigentlich wichtige Information. Zu den Listboxen: Es sind knapp 200 y-Werte und 100 Dateien, sodass ich davon ausging, dass man mit einem Slider schneller an sein Ziel kommt. Aber letztendlich sollte das sich nicht soviel geben.

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
spiele-joe
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 28.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.03.2012, 15:41     Titel:
  Antworten mit Zitat      
Nun gut, ich habe es jetzt ersteinmal soweit mit Hilfe von popupmenus realisiert, stoße aber dennoch auf so manches Problem.
1.Problem

Ich lade meine Ordner, liste die Dateien auf und übergebe es an die anderen Funktionen:
Code:

pfad=uigetdir('C:\test_folder','Please choose your data');
handles.pfad=pfad;
liste = dir('*.txt');
handles.files = {liste.name};
set(handles.edit_folder,'String',handles.pfad);
set(handles.popupmenu_time2d,'String',handles.files);
 

Nun werden aber nicht die Dateien in dem ausgewählten Ordner, sondern in dem Ordner in dem die Matlab-Datei liegt aufgelistet.
Ich denke, dass man folgenden Code verwenden muss:
Code:
liste = dir([pfad '*.ra1']);

Das klappt allerdings nicht, da dann die Fehlermeldung kommt:
Warning: popupmenu control requires a non-empty String
Control will not be rendered until all of its parameter values are valid

Hat da jmd. einen Tipp für mich? Danke!
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 20.03.2012, 15:50     Titel:
  Antworten mit Zitat      
solche fehler lassen sich meist gut mit dem debugger klären. setz doch mal ne marke da und guck wie deine werte aussehen.
Private Nachricht senden Benutzer-Profile anzeigen
 
spiele-joe
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 28.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.03.2012, 16:01     Titel:
  Antworten mit Zitat      
Sorry, ich versteh leider nicht genau was du meinst. Könntest du das bitte kurz erläutern? Embarassed

Update:
Habe den Fehler gefunden. So muss es stattdessen heißen:
Code:
liste = dir([pfad '\*.txt1']);
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 20.03.2012, 16:21     Titel:
  Antworten mit Zitat      
naja solche fehler entstehen ja wenn ein falsches daten format vorliegt.
welches daten format vorliegt finden man ja raus indem man die debugger marke setzt und einfach bis zu der stelle durchlaufen lässt. dann kann man sich die daten zu diesem zeitpunkt ja angucken kurz befor der fehler entsteht.
Private Nachricht senden Benutzer-Profile anzeigen
 
spiele-joe
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 28.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.03.2012, 13:59     Titel:
  Antworten mit Zitat      
Vielen Dank für deine Hilfe. Jetzt bin ich ein richtiger "Debugger"! Wink
Allerdings stehe ich nun vor dem nächsten Problem, dass ich einfach nicht verstehe/gelöst bekomme.
Ich lese Werte aus einer Datei aus und speicher sie so ab:
[6;6.005000000000000;6.010000000000000;6.015000000000000;6.020000000000000]
Anschließend übergebe ich sie an mein popup:
Code:
set(handles.popupmenu_minlength3d,'String',handles.I_x);

Jetzt habe ich allerdings das Problem, dass in meinem popup eine 5x5 char steht? Damit kann ich nicht weiterarbeiten, da ich ein cell array benötige.
Warum wird es nicht als solches übergeben?

Bin über jeden Tip dankbar! Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
spiele-joe
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 28.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.03.2012, 08:08     Titel:
  Antworten mit Zitat      
Kann mir hierbei keiner helfen?

Der Übersicht wegen hier noch der Code zum Auslesen der Daten:

Code:
fid = fopen(pfad3d);
for I = 1:3 % gehe zur 3. Zeile
    l = fgetl(fid);
end
I_3x = textscan(l,'%f');
I_x = I_3x{1}(2:end);
handles.I_x=I_x;
fclose(fid);

set(handles.popupmenu_minlength3d,'String',handles.I_x);


pfad3d ist entsprechend der Pfad zu Datei, den ich vorher ausgelesen und übergeben habe.
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.