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

valid variable name

 

Felix-21

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.01.2014, 16:18     Titel: valid variable name
  Antworten mit Zitat      
Hallo zusammen,

hab grad ein Problem mit dem speichern umbenannter Variablen:

im folgender Funktion werden meine Variablen umbenannt und inhalte übergeben.

Code:
[num, text] = xlsread('Daten','Tabelle2');
    a = text{1};
    load(a);

    [num, text] = xlsread('Daten','Tabelle3');
    zz = 1;
    while zz <= length(text)
        eval([text{zz,2},'=',text{zz,1}]);
        save('Variablen',text{zz,2},'-append')
        zz = zz+1

    end


leider bekomme ich beim save-Befehl jedes mal die Fehlermeldung

Code:
Error using save
' lbs' is not a valid variable name.

Error in Funktion2 (line 14)
        save('Variablen',text{zz,2},'-append')


egal welche Variablennamen eingeben werden.
Vorher probierte namen: l, k, li ...

warum nimmt er diese namen nicht an?


Danke für eure Hilfe


Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 12.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.01.2014, 21:38     Titel:
  Antworten mit Zitat      
Das was Du da machst ist ziemlich umständlich, fehleranfällig, langsam und schwer zu debuggen. "eval" solltest Du nicht benutzen, vor allem nicht so: was steht denn in text{zz,1}?
Die while-Schleife wäre auch besser eine for-Schleife. Warum schreibst Du jedes mal die Datei "variablen" neu?
Richtiges vorgehen wäre, die Variablen in ein struct zu schreiben und dann zum Schluß die Variablen schreiben:
Code:
variablen = struct();
for zz = 1:length(text)
  variablen.(text{zz,2}) = text{zz,2};
end
save('Variablen','-struct', variablen);

Nun zum eigentlichen Problem: Dein "Variablenname" enthält Leerzeichen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Felix-21

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.01.2014, 10:30     Titel:
  Antworten mit Zitat      
Hallo Sirius3,

vielen Dank schon mal für deine Antwort.

Die Variablennamen, die ich aus der Excel-Datei einlese, werden über eine Eingaben in eine GUI gespeichert.
Da das Programm für verschiedene User ist muss ich es sehr allgemein halten.
Der User gibt lediglich seinen Funktionsnamen ein und ich filtere über strfind die input und output parameter dieser raus.
Dadurch entstehen beim speichern der variablen-namen leider auch leerzeichen.

Wie kann ich das vermeiden?
gibt es einen Befehel der Leerzeichen überspringt?
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 09.01.2014, 11:35     Titel:
  Antworten mit Zitat      
Hallo,

zunächst stimme ich Sirius zu: dynamische Variablennamen sollten unter allen Umständen vermieden werden.
Ich würde stattdessen zu dynamischen Feldnamen von Strukturen raten, d.h. die für den Nutzer relevanten Daten liegen in EINER Variable data, und dort gibt es dann
data.vari1
data.vari2

Die Auswahl sollte über Listboxen oder Popupmenus erfolgen, da dann keine zweideutigen Eingaben möglich sind.

Zur Frage an sich:
Leerzeichen entfernen:
Code:
strrep(ausdruck, ' ', '')


Allgemeiner ist die Funktion genvarname

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Felix-21

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.01.2014, 12:08     Titel:
  Antworten mit Zitat      
Hallo nochmal,

danke an euch beide.
hab das programm jetzt endlich zum laufen bekommen, versuch jetzt noch die dynamischen Variablennamen zu vermeiden.

Mfg
Felix
 
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.