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

eval

 

Sven1234
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 08.09.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.09.2014, 17:40     Titel: eval
  Antworten mit Zitat      
Hallo Leute,

irgendwie habe ich mit eval Probleme. Ich möchte ein Excel File einladen. Jede Spalte ist dabei ein eigenes Signal. in der Ersten Zeile steht jeweils der Name und in der zweiten Zeile die Einheit. Ich möchte diese nun in meinem Workespace anlegen. Und zwar so das im Workespace der Signalname erscheint und darin dann die Werte (3:end).

Code:

[xlsfile,path2xls] = uigetfile('*.xls','Bitte Datei auswählen'); [nums,txt,AllData] = xlsread(fullfile(path2xls,xlsfile));      
varNames = char(txt(1,1:end));                                  

for col = 1:size(varNames,1)


    Name = char(txt(1,col));
    Wert = nums(1:end,col);
   
    Eval(Name(1,1))= Wert ;
   
end


Es kommt folgende Fehlermeldung:

In an assignment A(I) = B, the number of elements in B and I must be the same.

Error in Einlesen_aus_excel (line 18 )
Eval(Name(1,1))= Wert_t ;


Ich verwende

Windows 7 64 bit
Matlab 2012a

Gruß
Sven
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: 21.09.2014, 01:14     Titel: Re: eval
  Antworten mit Zitat      
Hallo Sven1234,

Code:
varNames = txt(1,1:end);
for col = 1:numel(varNames)
    Name = txt{col};
    Wert = nums(1:end,col);
   
    eval([Name, '= Wert'];
end

Der Befehl schreibt sich mit kleinem "e". Dann wird ein String als Argument benötigt.

Ich rate allerdings immer grundsätzlich von EVAL ab. Dynamisch Variablen zu erzeugen macht das Debuggen schwierig und den Code unübersichtlich und langsam. Im Allgemeinen ist es sinnvoller, eine Liste mit den Namen und ein Array mit den Werten zu haben.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Sven1234
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 08.09.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.09.2014, 14:09     Titel:
  Antworten mit Zitat      
Danke !

Ich weiß eval ist keine schone art .... aber wenns funktioniert Very Happy

gruß
Sven
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.