Verfasst am: 19.06.2008, 11:02
Titel: Struct abspeichern in .mat file
Hallo,
ich bin grade dabei ein kleines programm in Matlab zu schreiben. Bin noch blutiger Anfänger...
Grundidee:
Es sollen Daten aus GUI edit_textfeldern ausgelesen in einer Struct datei abgelegt und als dateiname.mat gespeicht werden. kunde(n).name , kunde(n).vorname usw.
später sollen die einzelnen Daten wieder ausgelesen werden können.
Problem 1:
Ich kann zwar über den "save dateiname strucktname" Befehl einen struckt speichen aber, wenn ich die Datei mit zb
Nochmal, ich möchte einfach nur einen struct in einer datei.mat speichn um dann dort daten eintragen zu können. D.H. Z.B. ich hab einen Struckt mit einem Kunden, name,vorname usw.. Als nächstes möchte ich dann einen neuen Kunden in dem struct eintragen mit neuem name,vorname usw.. Hierbei soll der alte natürlich nicht überschrieben werden.
Bei mir klappt das nur soweit, dass er zwar nen neuen einträgt den alten aber überschreibt...
n = numel(kunde)+1;
kunde(n).name=input('Name:','s');
kunde(n).vorname=input('Vorname:','s');
%filename='kundenliste.mat';
%fid=fopen(filename, 'a')
%tline=kunde;
%fclose(fid);
save kundenliste kunde
weil dies kunde=struct(...); hatte ich bei mir auch schon testweise rausgenommen ^^
naja jetzt gehts soweit schonmal hurra
Danke...
Noch ne Frage was sollte ich verwenden? Ich möchte die einzelnen structdaten in einer listbox oder tabelle im gui fenster laden und anklicken können, aber wie mach ich das hab zwar einige beiträge im Forum hier gefunden aber bin aus dehen nicht wirklich schau geworden.
Ganz einfach wie lade ich z.B. aus meinem struct, kunde(n) in zeile 1 mit den Spalten1. kunde(n).name, 2. kunde(n).vorname usw.
versteh auch die anleitung von matlab selber da nicht richtig...
Hoffe könnt sonem nappel wie mir weiterhelfen...
Noch ne kleine Frage wie kann ich z.B. kunde(1) löschen?
weil dies kunde=struct(...); hatte ich bei mir auch schon testweise rausgenommen ^^
Nein, das ; verhindert in Matlab nur die Ausgabe auf das Kommandofenster. Der Befehl kunde=struct(...) legt die Variable / Struktur kunde neu an und überschreibt somit auch die vorhandene, gleichlautende Variable.
Zitat:
Noch ne Frage was sollte ich verwenden? Ich möchte die einzelnen structdaten in einer listbox oder tabelle im gui fenster laden und anklicken können, aber wie mach ich das hab zwar einige beiträge im Forum hier gefunden aber bin aus dehen nicht wirklich schau geworden.
Ganz einfach wie lade ich z.B. aus meinem struct, kunde(n) in zeile 1 mit den Spalten1. kunde(n).name, 2. kunde(n).vorname usw.
versteh auch die anleitung von matlab selber da nicht richtig...
Hoffe könnt sonem nappel wie mir weiterhelfen...
Mit Tabellen habe ich noch nichts gemacht. Listboxen sind meines Wissens nach nur einspaltig. Sie werden mit uicontrol aufgerufen. Siehe dazu
Moin hab nochmal ne Frage, bin mit euer Hilfe schon nen ganzes Stück weiter gekommen, aber ...
Wenn ich wie weiter oben beschrieben einen Struct eintrag löschen möchte z.B. kunde(1) geht das im Matlab hauptschirm manuell ohne Probleme, in meinem Programm :
Code:
... function listbox1_Callback(hObject, eventdata, handles) % hObject handle to listbox1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
... function pushbutton_kundenloechen_Callback(hObject, eventdata, handles) % hObject handle to pushbutton_kundenloechen (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global kunde
a=questdlg('Den Ausgewählen Kunden wirklich löschen?', 'Ausgewählten Kunden löschen?', 'Ja','Abbruch', 'Ja');
switch a
case 'Ja'
kunde(handles.select)=[];
save kundenliste
end ...
Das liegt meiner Meinung nach daran dass handles.select, das in der ersten Funktion gesetzt wird, nicht übergeben wird. D.h. du setzt zwar den Wert richtig, allerdings bleibt der nur lokal in der Funktion.
Du kannst ja mal in deinen Funktionen handles.select ausgeben, das dürfte beides Mal ein anderer Wert sein.
Wie kann ich den angezeigten struct kunde.name z.B. alpabetisch sortieren, so das er in der listbox in alphabetischer Reinfolge steht ohne, dass doppelte namen rausgelöscht werden.
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
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.