2016-03-21 2 views
0

Dies könnte eine sehr bizarre Frage sein (und wahrscheinlich könnte ich abgeraten werden, so eine seltsame Sache zu tun), aber wenn ich eine Zeichenfolge wie in v_str ='var_name' habe und ich den Inhalt dieses Codes in den tatsächlichen Code verwandeln wollen, ist das möglich in MATLAB? Wie in:Ist es möglich, einen String in einen variablen Codenamen in MATLAB umzuwandeln?

v_str = 'var_name' 
x = make_string_to_code(v_str) 

übersetzt für das Funktionieren Code:

x = var_name 

, die einfach die Zeichenfolge eigentlichen Code transformiert.

Die einzige Möglichkeit, dies zu tun, ist, eine Datei mit diesem Code zu schreiben und dann in der nächsten Zeile, die Ordnung zu führen, aber ich wollte vermeiden, jedes Mal, wenn ich das möchte, Dateien zu schreiben.

Auch, warum ist das nicht so empfehlenswert? Warum ist es so schlecht?

+2

Ja, aber [Sie wollen nicht] (http://blogs.mathworks.com/loren/2005/12/28/ Evading-Eval /). – excaza

+0

@excaza danke. : D irgendwie habe ich es verpasst. –

Antwort

1

Sie können Eval verwenden, aber das bedeutet nicht, dass Sie sollten, wie andere bereits erwähnten.

v_str = '2 + 2' 
eval(['x = ' v_str]) % x = 4; 
x = eval(v_str); % x = 4; 

Die Dokumentation von eval finden Sie hier: eval

+0

also nicht Variablen aus Strings zu machen wird empfohlen? Warum? (Tut mir leid, wenn das eine offensichtliche Frage ist) –

+0

@CharlieParker, weil es eine schlechte Programmierpraxis im Allgemeinen ist, keine Ahnung zu haben, woher deine Variablen kommen; es macht es sehr schwierig zu debuggen. Sie führen auch blind * irgendeine * Zeichenkette aus, die überhaupt nicht sicher ist. Es ist auch sehr ineffizient, MATLABs JIT-Compiler kann 'eval'-Anweisungen nicht optimieren. – excaza

+0

@CharlieParker Sehen Sie den ersten Kommentar von excaza zu Ihrem ursprünglichen Beitrag. – Suever

Verwandte Themen