Verfasst am: 25.05.2014, 17:00
Titel: save und load einer .mat - Datenbank
Hallo,
ich habe eine Datenbank 'Tabledata.mat'.
Darin befinden sich die Eigenschaften von entweder einem Getriebe oder einem Motor.
Je nachdem, was man mit dem Befehl 'Bauteiltabelle' in diese Datenbank lädt, also entweder 'Bauteiltabelle('Motor');' oder 'Bauteiltabelle('Getriebe');'.
Die Eigenschaften werden am Ende der 'Bauteiltabelle'-Funktion wie folgt abgespeichert:
save(fullfile(pwd,'InterneParameter','Tabledata') , 'Tabledata');
Wenn ich nun die Motoreigenschaften in der Datenbank habe und den Befehl 'Bauteiltabelle('Getriebe');' eingebe und dann 'load Tabledata' eingebe, wechselt - wie gewollt - der Inhalt der Datenbank im command window.
Wenn ich nun aber wieder wechseln will, also zu den Motoreigenschaften, dann geht das nicht über 'load Tabledata', sondern nur über 'load (fullfile(pwd,'InterneParameter','Tabledata') , 'Tabledata' );'...
Kurz gesagt: Der Wechsel von Motor zu Getriebe klappt IMMER;
Der Wechsel von Getriebe zu Motor klappt NUR mit 'load (fullfile(pwd,'InterneParameter','Tabledata') , 'Tabledata' );'
% We have to update the data bank 'Tabledata' (depending on the input % variable 'Bauteil') including the elements dat1, % dat2, dat3, columnname1, columnname2, columnname3, columneditable1, % columneditable2 , columneditable3; % Beyond that we have to generate the new column 'Auswahl' for each table;
%
% dat1, columnname1, columneditable1 = 'Eigenschaften' % dat2 columnname2, columneditable2 = 'Bauraumbedarf' % dat3, columnname3, columneditable3 = 'Konstruktion'
% Load used data bank 'Bauteile'; load('Bauteile.mat');
% We update the three tables 'Eigenschaften', 'Bauraumbedarf' and % 'Konstruktion' with a for-loop; % 'table_Matrix' represents either 'Eigenschaften', % 'Bauraumbedarf' and 'Konstruktion'; % 'number' represents '1', '2' or '3'; % (The comments are examlary made for the first loop [number = 1 and % table = Eigenschaften]) for n = 1 : 1 : 3
% Creation of the matrix, which includes the table 'Eigenschaften'; switch n
case1
table_Matrix = Bauteile.(Bauteil).Eigenschaften;
case2
table_Matrix = Bauteile.(Bauteil).Bauraumbedarf;
case3
table_Matrix = Bauteile.(Bauteil).Konstruktion;
end
% Creation of the new column Auswahl in which the user can choose the % selected variation of the element;
Auswahl = {'Auswahl'};
% For each row (each element) one checkbox (= false) is necessary; for i = 2 : (size(table_Matrix, 1))
Auswahl = [Auswahl; false];
end clear i;
% Add the new column 'Auswahl' to the matrix % 'Eigenschaften_Matrix';
table_Matrix = [Auswahl, table_Matrix];
% For the 'Tabledata.dat1' we do not need the headings, but only the values % of the columns (= column 2 till end);
dat_number = {table_Matrix{2,:}};
for i = 3 : 1 : (size(table_Matrix, 1))
dat_number = [dat_number; {table_Matrix{i,:}}];
end clear i;
% For the 'Tabledata.columnname1' we just need row 1 of the % 'Eigenschaften_Matrix';
columnname_number = {table_Matrix{1,:}};
% For the 'Tabledata.columnedittable1' we have to select each row, which % should be changeable by the user (just the 'Auswahl'-column % [first column]);
columneditable_number = [true];
for i = 2 : 1 : (size(table_Matrix, 2))
columneditable_number = [columneditable_number, false];
end clear i;
% Update of the elements in the data bank 'Tabledata'; eval(['Tabledata.dat' num2str(n) '=dat_number;']);
eval(['Tabledata.columnname' num2str(n) '=columnname_number;']);
eval(['Tabledata.columneditable' num2str(n) '=columneditable_number;']);
end
% Save the actualized data bank 'Tabledata'; save(fullfile(pwd,'InterneParameter','Tabledata') , 'Tabledata');
Wenn ich da in der vorletzten Zeile 'Tabledata.dat1' eingebe, dann gibt er mir schon IMMER die richtige, aktualisierte Datenbank aus, wie ich sie haben möchte. Also auch immer von den Wechsel von Getriebe zu Motor und nicht nur für Motor zu Getriebe.
Ok, hab gerade nochmal alles geschlossen und wieder geöffnet und jetzt geht's....
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
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.