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

In GUI oberfläche struct dynamisch auslesen

 

elcachon
Forum-Century

Forum-Century


Beiträge: 190
Anmeldedatum: 03.05.11
Wohnort: ---
Version: 7.6.0(R2008a), 7.8.0(R2009a)
     Beitrag Verfasst am: 25.05.2011, 12:30     Titel: In GUI oberfläche struct dynamisch auslesen
  Antworten mit Zitat      
hallo matlab genies,

steh voll auf dem schauch! Lese in meiner GUI oberfläche mit uiimport eine datei ein, diese möchte ich plotten und und anschließend eine fft daraus machen! Haut alles hin soweit! Mein Problem: Ich speichere die datei in einer variable nach dem uiimport aufruf, dadurch wird meine eingelesene Datei als struct gespeichert!

Nun möchte ich, um mehrere Dateien einlesen zu können den fieldnamen in einer variablen speichern, um mein programm nicht ständig ändern zu müssen!
Code:

handles.fieldname = uiimport;
% hier ist es ein struct
 assignin('base', 'sheet2', handles.fieldname);
 if isempty(handles.fieldname)
     return
 end

% hier greife ich auf die fieldvariable direkt zu; möchte das gern ändern, damit ich nicht nur immer das file .data einlesen, sondern unterschiedliche files bearbeiten kann
  handles.unstruct = handles.fieldname.data;
 assignin('base', 'unstruct',handles.unstruct);
 


Danke schon mal für eure hilfe!
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: 25.05.2011, 13:19     Titel: Re: In GUI oberfläche struct dynamisch auslesen
  Antworten mit Zitat      
Hallo elcachon,

Bevor ich jetzt wieder einmal Anfange vor ASSIGNIN zu warnen: Lies bei Bedarf einfach mal die 1200 Posts durch, die ich dazu geschrieben habe... :-)

Ich verstehe Dein Problem nicht ganz. Es hört sich aber nach "dynamic fieldnames" an:
Code:
S.T = 'a';
S.U = 'b';
name = 'T';
disp(S.(name));

Hilft Dir das weiter?
Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
elcachon
Themenstarter

Forum-Century

Forum-Century


Beiträge: 190
Anmeldedatum: 03.05.11
Wohnort: ---
Version: 7.6.0(R2008a), 7.8.0(R2009a)
     Beitrag Verfasst am: 25.05.2011, 13:53     Titel:
  Antworten mit Zitat      
Hallo Jan,

du hast ja recht, aber ich benutze assignin nur um mir die variablen im workspace anzusehen, das kommt am ende wieder raus!!Smile

nochmals zu meinem problem: mit uimport wird der inhalt meines files in eine struct variable geladen, dabei wird der name des files als erster fieldname des angelegten structs gespeichert!
Ich möcht direkt auf den fieldnamen zugreifen und zwar mit hilfe einer weiteren variable, und in diese variable wird immer, egal welche datei ich mit uiimport auswähle, der name der ausgewählten datei als erster field element hinterlegt!

ich hoffe es ist einigermaßen verständlich!!
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: 25.05.2011, 14:07     Titel:
  Antworten mit Zitat      
Hallo elcachon,

Ich verstehe die gewünschte Struktur immer noch nicht.
Code:
% Nach UIIMPORT:
S.FileName = 'FileName';
S.Data = rand(100);   % Sinnlose Testdaten

% Dann möchtest Du vielleicht soetwas:
Data.(S.FileName) = S.Data;
 

Ich würde auf keinen Fall eine Variable erstellen, die den Namen der Datei als Namen benutzt. (Siehe dazu den Haufen an Posts, die ich zum Thema EVAL, EVALIN und ASSIGNIN verfasst habe.) In einem Struct wären solche Variablen aber gut aufgehoben, selbst wenn sie 'max' oder 'dos format C:\' heißen.

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

Forum-Century

Forum-Century


Beiträge: 190
Anmeldedatum: 03.05.11
Wohnort: ---
Version: 7.6.0(R2008a), 7.8.0(R2009a)
     Beitrag Verfasst am: 25.05.2011, 14:29     Titel:
  Antworten mit Zitat      
hey jan

meine variable(siehen oben)handles.filename nach uiimport ist bereits ein struct!

ich will davon den fieldnamen in einer variablen speichern, oder wenigstens mal darauf zugreifen.
Private Nachricht senden Benutzer-Profile anzeigen
 
elcachon
Themenstarter

Forum-Century

Forum-Century


Beiträge: 190
Anmeldedatum: 03.05.11
Wohnort: ---
Version: 7.6.0(R2008a), 7.8.0(R2009a)
     Beitrag Verfasst am: 26.05.2011, 08:11     Titel:
  Antworten mit Zitat      
guten morgen jungs,

ich wär wirklich froh, wenn sich bitte nochmal jemand mein Problem anschauen könnte, komm einfach nicht mehr weiter! Saß gestern den ganzen tag ohne auf eine lösung zu kommen!!
Nochmals Problem:

aufruf handles.fieldname = uiimport gibt mir den Inhalt der ausgewählten Datei als struct in der variablen handles.fieldname aus!!
Jetzt möcht ich den inhalt plotten und ne fft drüber laufen lassen

Da ich das aber von mehreren CSV files machen möchte, ist dieser struct ganz schön nervig, da ich den inhalt(wenn die datei z.B data) heisst nur mit handles.fieldname.data ansprechen kann, und ich dann jedes mal das programm ändern müsste wenn ich eine neue datei auswähle!!

Frage: Wie kann ich das umschreiben, um nicht jedesmal das programm ändern zu müssen??

Bitte helft mir, bin scho a bissal verzweifelt!!!

Lg elcachon!!!
Private Nachricht senden Benutzer-Profile anzeigen
 
elcachon
Themenstarter

Forum-Century

Forum-Century


Beiträge: 190
Anmeldedatum: 03.05.11
Wohnort: ---
Version: 7.6.0(R2008a), 7.8.0(R2009a)
     Beitrag Verfasst am: 26.05.2011, 10:10     Titel:
  Antworten mit Zitat      
ok
hab die Lösung gefunden!!

Das wollt ich machen!
Code:

dataImport = uiimport; %hier wird inhalt in struct dataImport gespeichert

if isempty(dataImport)
     return
 end

% in cell array werden die field Namen von data import gespeichert
selectField = fieldnames(dataImport);
% in data content wird nun der inhalt des structes bezüglich seines field Namens gespeichert!
dataContent = dataImport.(selectField{1});
 


genau dass war mein problem, sorry für die schlecht Erklärung jan!Smile
Nächstes mal werd ich mir mehr Mühe geben!!Wink
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.05.2011, 10:11     Titel:
  Antworten mit Zitat      
Hallo elcachon,

Schön, dass Du eine Lösung gefunden hast! So ungefähr hatte ich mir das wohl vorgestellt, aber die Strukture des STRUCTs nicht ganz begriffen.

Zitat:
sorry für die schlecht Erklärung

Das ist überhaupt kein Problem - für mich. Wenn ich etwas verstehe, versuche ich eine Antwort zu finden. Wenn ich etwas nicht verstehe, frage ich nach und rate ein wenig. Nur der Fragende hat ja eilig mit der Antwort! Und das Suchen nach der exakten Beschreibung des Problems beinhaltet fast immer auch schon die Lösung, deshalb ist es ja so schwer. Und für den Prozess des Auffindens der genauen Problem-Definition ist goMatlab der richtige Ort.

Viel Erfolg, Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
elcachon
Themenstarter

Forum-Century

Forum-Century


Beiträge: 190
Anmeldedatum: 03.05.11
Wohnort: ---
Version: 7.6.0(R2008a), 7.8.0(R2009a)
     Beitrag Verfasst am: 01.06.2011, 07:50     Titel:
  Antworten mit Zitat      
Guten Morgen Jan,


Da hast du recht!

Werd wahrscheinlich noch mehr Fragen stellen müssen in Zukunft, aber hier in goMatlab wird man ja Gott sei Dank nicht allein gelassen!

Lg elcachon
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.