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

save und load einer .mat - Datenbank

 

joshua
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 21.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.05.2014, 17:00     Titel: save und load einer .mat - Datenbank
  Antworten mit Zitat      
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' );'


Woran liegt das denn?

Code:

>> Tabledata.dat1

ans =

    [0]    [1]    [1000]    [0]    [0]    [0]    [440]    [0]    [2000]    [NaN]
    [0]    [2]    [1100]    [0]    [0]    [0]    [540]    [0]    [   0]    [NaN]
    [0]    [3]    [1500]    [0]    [0]    [0]    [680]    [0]    [   0]    [NaN]

>> Bauteiltabelle('Getriebe');
>> load Tabledata;
>> Tabledata.dat1

ans =

    [0]    [1]    [ 45]    [0]    [0]    [0]
    [0]    [2]    [147]    [0]    [0]    [0]
    [1]    [3]    [178]    [0]    [0]    [0]
    [0]    [4]    [197]    [0]    [0]    [0]
    [0]    [5]    [142]    [0]    [0]    [0]
    [0]    [6]    [173]    [0]    [0]    [0]

>> Bauteiltabelle('Motor');
>> load Tabledata;
>> Tabledata.dat1

ans =

    [0]    [1]    [ 45]    [0]    [0]    [0]
    [0]    [2]    [147]    [0]    [0]    [0]
    [1]    [3]    [178]    [0]    [0]    [0]
    [0]    [4]    [197]    [0]    [0]    [0]
    [0]    [5]    [142]    [0]    [0]    [0]
    [0]    [6]    [173]    [0]    [0]    [0]

>> load (fullfile(pwd,'InterneParameter','Tabledata') ,  'Tabledata' );
>> Tabledata.dat1

ans =

    [0]    [1]    [1000]    [0]    [0]    [0]    [440]    [0]    [2000]    [NaN]
    [0]    [2]    [1100]    [0]    [0]    [0]    [540]    [0]    [   0]    [NaN]
    [0]    [3]    [1500]    [0]    [0]    [0]    [680]    [0]    [   0]    [NaN]

>> Bauteiltabelle('Getriebe');
>> load Tabledata;
>> Tabledata.dat1

ans =

    [0]    [1]    [ 45]    [0]    [0]    [0]
    [0]    [2]    [147]    [0]    [0]    [0]
    [1]    [3]    [178]    [0]    [0]    [0]
    [0]    [4]    [197]    [0]    [0]    [0]
    [0]    [5]    [142]    [0]    [0]    [0]
    [0]    [6]    [173]    [0]    [0]    [0]
 
Private Nachricht senden Benutzer-Profile anzeigen


joshua
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 21.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.05.2014, 17:05     Titel:
  Antworten mit Zitat      
Der Code von der Funktion Bauteiltabell sieht so aus:
Code:

function [] = Bauteiltabelle(Bauteil)

% 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
            case  1
                table_Matrix = Bauteile.(Bauteil).Eigenschaften;
            case  2
                table_Matrix = Bauteile.(Bauteil).Bauraumbedarf;
            case  3
                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.
Private Nachricht senden Benutzer-Profile anzeigen
 
joshua
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 21.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.05.2014, 17:42     Titel:
  Antworten mit Zitat      
Ok, hab gerade nochmal alles geschlossen und wieder geöffnet und jetzt geht's....
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 - 2024 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.