2015-03-02 17 views
11

Devo convertire una stringa come str='x^2+3' in una funzione. Una soluzione è ottenere una funzione inline, f=inline(str), ma non sarà supportata nelle versioni future.Come convertire la stringa in handle di funzione in Matlab?

Una soluzione è f=eval(['@(x)',f]) ma non sembra un'opzione ordinata.

La funzione str2func non funziona perché richiede solo il nome di una funzione esistente.

risposta

12

Non funziona quanto segue?

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

Come il PO ha sostenuto che 'str2func' non avrebbe funzionato, si potrebbe dire che con' [ '@ (x)' str] 'di creare effettivamente una funzione che è * esistente * dopo e convince' str2func' fare il suo dovere. Solo un suggerimento, eliminerò il commento più tardi. – thewaywewalk

+0

Grazie per il feedback, lascerò il tuo commento per ora almeno come lo spiega bene. – am304

+1

Si potrebbe anche dire che '['@ (x)' str]' è il "nome" della funzione anonima che viene creata al volo –

Problemi correlati