2016-03-21 19 views
0

Bu çok garip bir soru olabilir (ve muhtemelen böyle garip bir şey yapmamaya karşı tavsiye edilebilir) ancak v_str ='var_name' gibi bir dizem varsa ve bu kodun içeriğini gerçek koda dönüştürmek istiyorum, bu mümkün mü? MATLAB içinde? olduğu gibi:Bir dizeyi MATLAB'de değişken kod adına dönüştürmek mümkün mü?

v_str = 'var_name' 
x = make_string_to_code(v_str) 

işleyen koduna çevirir: basitçe gerçek koduna dize dönüştüren

x = var_name 

.

Bunu yapmayı düşündüğüm tek yol, o kodla bir dosya yazmak ve sonra bu satırı çalıştıran bir sonraki satırda yazmaktır, ancak bunu yapmak istediğim her defasında dosya yazmaktan kaçınmak istedim.

Ayrıca, neden bu kadar tavsiye edilmiyor? Neden bu kadar bozuk?

+2

ama [sen istemiyoruz]:

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

eval dokümantasyonu burada bulabilirsiniz kaçma-Eval /). – excaza

+0

@excaza teşekkür ederim. : D bir şekilde onu özledim. –

cevap

1

Değerlendirmeyi kullanabilirsiniz, ancak bu, diğerlerinin de belirttiği gibi yapmanız gerektiği anlamına gelmez. http://blogs.mathworks.com/loren/2005/12/28/ (Evet eval

+0

, bu nedenle dizgiler dışında değişkenler yapılması önerilmez? Neden öyle? (Bu açık bir soru ise özür dilerim) –

+0

@CharlieParker, çünkü değişkenlerinizin nereden geldiğini bilmemek için genel olarak kötü programlama pratiği; hata ayıklamayı çok zorlaştırır. Ayrıca, hiç güvenli olmayan * herhangi bir * dizeyi de körü körüne yürütüyorsunuz. Ayrıca son derece verimsiz, MATLAB'ın JIT derleyicisi 'eval' ifadelerini optimize edemez. – excaza

+0

@CharlieParker Excaza'nın ilk gönderideki ilk yorumuna bakın. – Suever

İlgili konular