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

Nur bestimmte Variablen aus einer anderm m-File laden

 

tagit

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.08.2014, 23:56     Titel: Nur bestimmte Variablen aus einer anderm m-File laden
  Antworten mit Zitat      
Hi!

"Para_file.m":
Code:

paramter_a=123;
paramter_b= 1;
parameter_c= 7;
 



Wie kann ich nur bestimmte Parameter, die in einem anderen m-File ("Para_file.m")enthalten sind, laden damit sie meinem aktuellen Skript bekannt sind.

Ich könnte natürlich einfach nur "Para_file" in meinem Skript aufrufen und mein Skript würde alle definierten Parameter des "Para_files" kennen. Ich möchte aber ausdrücklich, dass er dann nur die Parameter "paramter_a" und "paramter_c" kennt.

Dank euch


Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.08.2014, 08:12     Titel:
  Antworten mit Zitat      
Code:

% ursprünglich im WS vorhandene Variablen
w = whos;
var_ws_org = {w.name};

% Variablen die durch Skript erzeugt werden
par_a = 1;
par_b = 3;
par_c = 5;

% alle Variablen außer angegebenen löschen
var_names = {'par_a','par_b'};
w = whos;
var_ws = {w.name};
vars_to_delete = union(setdiff(var_ws,union(var_ws_org,var_names)),{'var_ws','vars_to_delete'});
clear(vars_to_delete{:});
 


Ich würde die überflüssigen Variablen einfach nach der Ausführung des Skriptes löschen.

viele Grüße
Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
tagit

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.08.2014, 10:08     Titel:
  Antworten mit Zitat      
Danke, aber das Löschen der "überflüssigen" Variablen kommt leider nicht in Frage.
Die überflüssigen Variablen sollen erst zu einem späteren Zeitpunkt geladen werden -->Warum? --> Weil es sich bei den Variablen um Messwerte handelt, die in der Realität eigentlich erst zu einem späteren Zeitpunkt t zur Verfügung stehen, und ich sehen will wie mein entwickeltes Programmmanagement während der Zeit auf neu hinzukommenden Variablen-Input (Messerte) reagiert.
Eigentlich könnte ich zu Beginn gleich alle Variablen zu Beginn laden und dann mein Programmmanagement laufen lassen. Das will ich aber nicht, da das Programmmanagement auf späteren Variablen-Input reagieren soll. Rolling Eyes
 
Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.08.2014, 11:01     Titel:
  Antworten mit Zitat      
Warum verwendest du nicht mat-files zum Speichern der Daten? Dann kannst du angeben welche Variablen du laden willst.

Alternativ könntest du auch eine Funktion schreiben, welcher du mitteilst welche Variablen geladen werden sollen. Finde ich aber nicht so schön.

Code:

function load_data(vars_to_load)

if any(strcmp('par_a',vars_to_load))
    assignin('caller','par_a',3);
end


if any(strcmp('par_b',vars_to_load))
    assignin('caller','par_b',0);
end


if any(strcmp('par_c',vars_to_load))
    assignin('caller','par_c',-2);
end

end

 



Code:

load_data({'par_a','par_b'})
 
Private Nachricht senden Benutzer-Profile anzeigen
 
tagit

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.08.2014, 16:42     Titel:
  Antworten mit Zitat      
Da ich objektorientiert programmiere, sind die Daten zu den jeweiligen Objekten im "Para_file.m" wie folgt hinterlegt:

Code:

object{1}.zeit= ...;
object{1}.par_a= ...;
object{1}.par_b= ...;
object{1}.par_c= ...;

object{2}.zeit= ...;
object{2}.par_a= ...;
object{2}.par_b= ...;
object{2}.par_c= ...;

usw.


Wie kann ich denn diese Daten in einem mat-File abspeichern..mit dem save befehl klappt es nicht?
Ich möchte wenn die Zeit passt, z.B. alle Parameter zu "Objekt 1" laden.
 
Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.08.2014, 08:53     Titel:
  Antworten mit Zitat      
Ich kenne mich mit objektorientierter Programmierung in Matlab nicht aus. Aber das sieht für mich so aus als wären das "nur" cell-arrays.

Warum kommt das löschen nicht in Frage? Es macht doch außer vom Rechenaufwand keinen Unterschied.

Code:

par_a = 2;
par_b = 5;
clear par_b
 


ergibt das selbe wie

Code:

par_a = 2;
 


Wie sollen den die anderen Variablen später geladen werden? Wieder durch Aufruf von "Para_file.m"?

viele Grüße
Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
tagit

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.08.2014, 12:45     Titel:
  Antworten mit Zitat      
Danke für Deine Hilfe:) Ich bin jetzt einen anderen Weg gegangen, sodass sich das jetzt erledigt hat.
 
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.