[MATLAB] Come posso fare in modo di far inserire

alexdr1
Come posso far in modo che l'utente posso scegliere una funzione di cui poi fare le operazione che si vuole?
Mi spiego meglio sto creando una funzione che permetta di trovare gli zeri di una funzione. Il problema è che non riesco a far scegliere la funzione di cui vuole trovare gli zeri.
Nella prima riga di codice della function ho scritto:

function r=bisezione(fun, xb)

Nel resto del codice manipolo fun con il comando feval (credo sia sbagliato perché richiama solo m.file) e scrivo ad esempio:
fa=feval(fun,a)

Quando poi ho finito di scrivere tutto il codice e utilizzo la funzione bisezione che ho creato nella commando window in questo modo:
bisezione=('sin(x)', [-3 6])
Mi dice come errore che non è valido il nome funzione 'sin(x)'.
Provo con:
bisezione(inline('sin(x)'), [-3 6])
E mi da come errore "la funzione non è definita per 'inline' input".
Allora come posso fare?
Esiste qualche altra funzione?

Risposte
apatriarca
Puoi semplicemente scrivere fun(a) e passare la funzione come
bisezione(@(x) sin(x), [-3 6])

Si chiamano funzioni anonime (anonimous functions in inglese)

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.