Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

? Undefined function or method 'strike' for input arguments of type 'double'

  1. Nov 7, 2011 #1
    ??? Undefined function or method 'strike' for input arguments of type 'double'

    Hi all..I have some problem with a Matlab script..
    The aim of my exercise is to plot the change of a derivative's price (a swaption) on the basis of the change of its principal parameters (for example the strike).
    This is the script:

    strike=0.1:0.01:1.5
    for i=1:lenght(strike)
    swaption_strike(i)=swaption_price(strike(i))
    end

    where the function swaption_price is defined into another script and includes of course other variables.

    It turns out this error message:

    swaption_price(strike(i))
    ??? Undefined function or method 'strike' for input arguments of type 'double'.

    What could be wrong?

    Thanks

    Elisa
     
  2. jcsd
  3. Nov 7, 2011 #2

    jhae2.718

    User Avatar
    Gold Member

    Re: ??? Undefined function or method 'strike' for input arguments of type 'double'

    From the error message it sounds as if somehow i becomes a non-integer value and it tries to index strike, which MATLAB is interpreting as a function call. How do you define the swaption_price() function?

    Additionally, it is always preferable to vectorize functions in MATLAB rather than use a for loop. If you use element by element operations in the function, you can just call:
    Code (Text):

    strike=0.1:0.01:1.5;
    swaption_strike = swaption_price(strike);
     
    instead of
    Code (Text):

    strike=0.1:0.01:1.5;
    [COLOR="Blue"]for[/COLOR] i=1:length(strike);
        swaption_strike(i) = swaption_price(strike(i));
    [COLOR="Blue"]end[/COLOR]
     
    This is more efficient in MATLAB.
     
    Last edited: Nov 7, 2011
  4. Nov 8, 2011 #3
    Re: ??? Undefined function or method 'strike' for input arguments of type 'double'

    You're right, it is better to avoid the use of loops...
    anyway I have solved the problem..I had to include in my script all the swaption_price function's variables evaluated in a point, with just the strike as indexed parameter!
     
  5. Nov 12, 2011 #4
    Re: ??? Undefined function or method 'strike' for input arguments of type 'double'

    Ok I've solved my problem..now I want to parametrize on a variable which is NOT an input argument of my original function..After a quick look on the web, I found the command varargin...Some idea??

    Thanks!!

    Elisa
     
  6. Nov 12, 2011 #5

    Pythagorean

    User Avatar
    Gold Member

    Re: ??? Undefined function or method 'strike' for input arguments of type 'double'

    varargin means you have variable amount of arguments in. It's a way to say "if there two inputs do this, if three, then this" etc.

    Not sure what you're asking tho. If you restate your question at the more lower level mechanics (I'm a "left" "right" kinda guy) I'll try and help you out
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook