Verfasst am: 05.05.2011, 12:30
Titel: speichern eines Structs mit variablen Namen
Moin Zusammen,
ich steht grad auf dem Schlauch, was das abspeichern eines Structs anbelangt. Für diverse Berechnungen muss ich mir binäre Dateien in Matlab einlesen. Die Daten werden durch eine andere Routine in ein Struct eingelesen, da ich schon eine handvoll von weiteren Routinen und Funktionen für diverse Berechnungen habe, ist es mir wichtig, das die einzelnen eingelesenen Structs einen identischen aufbau haben. Ich hab mir also eine Routine geschrieben, die die eingelesenen Dateien/Structs entsprechend umsortieren bzw. aufbauen soll. Dieses Script wollte ich nun als Funktion, in eine andere einbinden, jetzt klappt aber das abspeichern nicht mehr.
Es wird also keine Datei mit entsprechendem Namen abgespeichert. Merkwürdiger weise ist danach, allerdings eine Struct mit entsprechendem Namen im Workspace geladen.
Wenn ich das ganze nicht versuche als Funktion umzusetzen, dann funktioniert alles ohne Fehlermeldung.
%%
%Anzahl der Kanäle berechnen
numChannels = size(data.Channel,2);
%% neue Namen und Bezeichnungen anlegen % Namen für Kanäle und Strukturen erzeugen
NewStructName = strcat('M_',file(i).name(4:7),'_',file(i).name(9:10),'_',file(i).name(12:13),'_',file(i).name(15:16),'_',file(i).name(18:19));
NewSaveName = NewStructName;
DataStruct = struct;
for n=1:numChannels
NewChannelName = data.Channel(1,n).name;
Für einen Tipp oder Lösungsansatz wäre ich sehr dankbar.
Gruß Jan
_________________
Ich bin ein Schwamm, denn ich sauge Ideen auf und mache sie nutzbar. Die meisten meiner Ideen gehören ursprünglich anderen Leute, die sich halt nicht mehr die Mühe gemacht haben, sie weiterzuentwickeln. Thomas Alva Edison (1847 - 1931)
Jede Funktion hat ihren eigenen Workspace. Du erstellst eine Variable im Base-Workspace, versuchst sie dann aber innerhalb der Funktion zu speichern. Dort wurde sie aber gar nicht erstellt.
Es gibt gar keinen Grund, der Variable einen bestimmten Namen zu geben. Denn wenn Du sie in ein MAT-File speicherst, wird nur der Inhalt ins file geschrieben. "save(NewSaveName, 'DataStruct', '-v6')" wäre also hinreichend.
ich möchte bzw. muss zu einem späterem Zeitpunkt mehrer Dateien mit den "DataStructs" in den Workspace laden. Wenn ich diese so speicher wie Du es vorschlägst, heissen sie alle gleich nämlich "DataStruct" und es lässt sich deshalb nur eines davon laden. Meine Idee war daher, diesen Structs denselben Namen wie dem *.mat File zu verpassen.
Gruß Jan
_________________
Ich bin ein Schwamm, denn ich sauge Ideen auf und mache sie nutzbar. Die meisten meiner Ideen gehören ursprünglich anderen Leute, die sich halt nicht mehr die Mühe gemacht haben, sie weiterzuentwickeln. Thomas Alva Edison (1847 - 1931)
Und schon hast Du 10 Structs mit gleichem Namen geladen und kannst auch noch ganz komformtabel per Index darauf zugreifen, statt erst wieder eine komplizierte Methode zubenötigen um die Variablennamen erneut für den Zugriff zu erstellen...
das ist ein echt schöner Lösungsansatz - hat Charme.
Das in dieser Art umzusetzen, ist in der Tat sehr viel einfacher.
Danke für den Lösungsatz.
JN
_________________
Ich bin ein Schwamm, denn ich sauge Ideen auf und mache sie nutzbar. Die meisten meiner Ideen gehören ursprünglich anderen Leute, die sich halt nicht mehr die Mühe gemacht haben, sie weiterzuentwickeln. Thomas Alva Edison (1847 - 1931)
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.