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

Click For Summary
SUMMARY

The forum discussion centers on a MATLAB scripting issue where the user encountered an "Undefined function or method 'strike' for input arguments of type 'double'" error. The problem arose from incorrectly indexing the 'strike' variable within a for loop. The solution involved vectorizing the function call to enhance efficiency, allowing the user to replace the loop with a direct call to the 'swaption_price' function using the entire 'strike' array. Additionally, the user sought guidance on using 'varargin' to handle variable input arguments in their function.

PREREQUISITES
  • Understanding of MATLAB scripting and syntax
  • Familiarity with vectorization techniques in MATLAB
  • Knowledge of function definitions and variable input handling in MATLAB
  • Basic concepts of financial derivatives, specifically swaptions
NEXT STEPS
  • Learn MATLAB vectorization techniques to improve script efficiency
  • Explore MATLAB function definitions and the use of 'varargin' for variable input arguments
  • Investigate the implementation of financial models in MATLAB, focusing on swaptions
  • Review MATLAB debugging techniques to troubleshoot common scripting errors
USEFUL FOR

This discussion is beneficial for MATLAB users, financial analysts working with derivatives, and developers looking to optimize their MATLAB scripts for better performance.

elisamars
Messages
3
Reaction score
0
? 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
 
Physics news on Phys.org


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:
strike=0.1:0.01:1.5;
swaption_strike = swaption_price(strike);
instead of
Code:
strike=0.1:0.01:1.5;
for i=1:length(strike);
    swaption_strike(i) = swaption_price(strike(i));
end

This is more efficient in MATLAB.
 
Last edited:


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!
 


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
 


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
 

Similar threads

Replies
1
Views
18K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
Replies
3
Views
5K
  • · Replies 5 ·
Replies
5
Views
7K
  • · Replies 3 ·
Replies
3
Views
4K
  • · Replies 3 ·
Replies
3
Views
3K
  • · Replies 2 ·
Replies
2
Views
148K
  • · Replies 1 ·
Replies
1
Views
8K
  • · Replies 1 ·
Replies
1
Views
4K