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?

 Accepted Answer

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 Comments

Thank you!
Or simpler and faster:
RegulaRaiz(@Fun,1,2,0.0001)

Sign in to comment.

More Answers (1)

Adam
Adam on 21 Sep 2016
Edited: Adam on 21 Sep 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'.

Categories

Find more on Operators and Elementary Operations in Help Center and File Exchange

Tags

Asked:

on 21 Sep 2016

Edited:

on 21 Sep 2016

Community Treasure Hunt

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

Start Hunting!