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

Problem mit Assignin und Struct

 

JN78
Forum-Fortgeschrittener

Forum-Fortgeschrittener



Beiträge: 69
Anmeldedatum: 18.05.09
Wohnort: Stuhr
Version: R2010b, R2011a
     Beitrag Verfasst am: 08.11.2010, 17:45     Titel: Problem mit Assignin und Struct
  Antworten mit Zitat      
Hallo zusammen,

ich hab ein Problem mit dem assignin Befehl in Matlab.
Folgende Ausgangssituation: Ich lese mittels einer Routine mehrere Files ein und möchte die eingelesenen Daten mit einem variablen Dateinamen als .mat abspeichern. Dies geschieht File für File nacheinander.


Code:

file = dir('*.dat');
tmp = length(file);

for i=1:tmp
fid = fopen(file(i).name);
SaveName = strcat( file(i).name(1:end-4),'.mat');
DataName = strcat( file(i).name(1:end-13),'_',file(i).name(12:end-4));
...
famDat.(headerData{8,iChannel}{8}) = channelProperties;

assignin('base',DataName,famDat);  
   
end

save(SaveName, DataName, '-v6');
% klappt, bringt mich aber nicht weiter Sad
 


Da ich nachher wieder einige der Daten für die Weiterverarbeitung brauche und diese auseinander halten möchte sollen die Dateinamen sowie die Namen der Sructs mit den Daten variabel sein.
Abspeichern mit variablen Dateinamen klappt, nur das mit dem struct Namen bekomme ich nicht hin.

Code:

save(SaveName, famDat, '-v6');
 


So klappt es, allerdings kann ich dann immer nur eine Datei in den WS laden, da ja alles Structs den identischen Namen "famDat" haben.

Die Fehlermeldung lautet:

Kann mir da jemande einen Tipp geben?
Code:
??? Error using ==> assignin
Invalid variable name "2010-10-25_12-10-00" in ASSIGNIN.

Error in ==> Fam2Mat2 at 129
    assignin('base',DataName,famDat);


Gruß und besten Dank,

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)
Private Nachricht senden Benutzer-Profile anzeigen


eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 08.11.2010, 20:47     Titel:
  Antworten mit Zitat      
Variablen müssen mit einem Buchstaben anfangen.
Private Nachricht senden Benutzer-Profile anzeigen
 
JN78
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener



Beiträge: 69
Anmeldedatum: 18.05.09
Wohnort: Stuhr
Version: R2010b, R2011a
     Beitrag Verfasst am: 09.11.2010, 08:55     Titel:
  Antworten mit Zitat      
Ok, danke für den Hinweis. Hab nun vornedrann einen Buchstaben und die Bezeichnung gekürzt, jetzt klappt es wie gewünscht. Danke
_________________

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)
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 09.11.2010, 12:57     Titel: Re: Problem mit Assignin und Struct
  Antworten mit Zitat      
Hallo Jan,

Deine Lösung einen Buchstaben vor den Namen zu schreiben könnte weitere Probleme aufwerfen. Wenn ich mir die Fehlermeldung anschaue:
Zitat:
Code:
??? Error using ==> assignin
Invalid variable name "2010-10-25_12-10-00" in ASSIGNIN.

Error in ==> Fam2Mat2 at 129
    assignin('base',DataName,famDat);
 

Natürlich ist auch ""A2010-10-25_12-10-00" kein valider Name einer Variablen.
Ich weiß nicht, ob dies Dein Programm betrifft, weil ich die Funktion des Code-Ausschnitts nicht verstanden habe. Im Allgemeinen erzeugt ASSIGNIN aber immer eine zusätzliche Komplexitätsstufe die Probleme wie Deines geradezu heraufbeschwören. Deshalb verwende ich immer eine geordnete Übergabe von Variablen per Input und Output und wenn die Namen der Variablen eine Rolle spielen, packe ich sie in ein Struct.

Gruß, Jan
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 - 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.