Function index is a string, why?

function [ Xs ] = RegulaRaiz( Fun,a,b,ErrMax )
imax=100;
Fa= Fun(a)
Fb=Fun(b)
The code for fun is:
function y = Fun(x)
y = (sin(x)/(3*x))-0.25;
end
If I call the function as RegulaRaiz( 'Fun',1,2,0.0001 )
Fa becomes f and fb becomes u, how do i fix this?

 Respuesta aceptada

michio
michio el 21 de Sept. de 2016
The first input 'Fun' to the function RegulaRaiz is 1x3 char, 'Fun'. So Fa = Fun(1) is f and, Fb = Fun(2) = u.
Could you try
RegulaRaiz(@(x) Fun(x),1,2,0.0001)
instead? Specify the function as an input using a function handle @(x) Fun(x).

2 comentarios

Vitor Braz
Vitor Braz el 21 de Sept. de 2016
Thank you!
Jan
Jan el 21 de Sept. de 2016
Or simpler and faster:
RegulaRaiz(@Fun,1,2,0.0001)

Iniciar sesión para comentar.

Más respuestas (1)

Adam
Adam el 21 de Sept. de 2016
Editada: Adam el 21 de Sept. de 2016
Why are you naming a variable passed to your function the same as a function? The string you pass in as the variable 'Fun' is hiding the function so
Fa= Fun(a);
is trying to index into 'Fun' so Fun(a) is Fun(1) which is 'F' and Fun(b) is Fun(2) which is 'u'.

Categorías

Más información sobre Operators and Elementary Operations en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 21 de Sept. de 2016

Editada:

el 21 de Sept. de 2016

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by