2015-03-02 15 views
11

Muszę przekonwertować ciąg znaków, taki jak str='x^2+3' na funkcję. Rozwiązaniem jest uzyskanie funkcji inline, f=inline(str), ale nie będzie ona obsługiwana w przyszłych wersjach.Jak przekonwertować ciąg na uchwyt funkcji w programie Matlab?

Obejście problemu: f=eval(['@(x)',f]), ale nie wydaje się być opcją schludną.

Funkcja str2func nie działa, ponieważ wymaga tylko nazwy istniejącej funkcji.

Odpowiedz

12

Nie wykonuje następujących czynności?

str = 'x^2+3'; 
f = str2func(['@(x)' str]); 
+1

W PO twierdził, że 'str2func' nie będzie działać, można wspomnieć, że z' [ „@ (x)” str] 'rzeczywiście stworzyć funkcję, która jest istniejący * * potem i przekonuje' str2func' wykonać swój obowiązek. Tylko sugestia, usuniemy komentarz później. – thewaywewalk

+0

Dzięki za informację zwrotną, na razie zostawię komentarz tak, jak to wyjaśnia. – am304

+1

Można również powiedzieć, że '['@ (x)' str]' jest "nazwą" anonimowej funkcji, która jest tworzona w locie –

Powiązane problemy