Filter löschen
Filter löschen

Matrix dimension must agree problem

1 Ansicht (letzte 30 Tage)
Asir Tushar
Asir Tushar am 7 Dez. 2018
Kommentiert: Asir Tushar am 8 Dez. 2018
I have run the code on octave which gives the following plot.
When I tried the same code on Matlab , there was a dimension mismatch on line starting with "d1" . I think this is because of broadcasting. Anyone knows how to fix it ?
m=6;
n=61;
S0=70;
S1=130;
K=100;
r=.12;
T=1.0;
sigma=0.10;
time=transpose(linspace(T,0,m))
S=linspace(S0,S1,n);
d1=(log(S/K)+(( r + (sigma.^2)/2)*(T-time)))./(sigma*sqrt(T - time)); %(problem in this line)
d2=(log(S/K)+(( r - (sigma.^2)/2)*(T-time)))./(sigma *sqrt(T - time));
part1=bsxfun ( @times , normcdf ( d1 ) , S ) ;
part2=bsxfun ( @times , K *exp( - r *( T - time ) ) , normcdf ( d2 ) ) ;
VC = part1 - part2
plot(S,VC)

Akzeptierte Antwort

madhan ravi
madhan ravi am 7 Dez. 2018
To be honest I didn't get any errors,
Try clear all at the very beginning of your code and try again.
Screen Shot 2018-12-07 at 11.40.00 PM.png
  3 Kommentare
madhan ravi
madhan ravi am 8 Dez. 2018
Bearbeitet: madhan ravi am 8 Dez. 2018
2018b you? post the complete error message you get everything in red , alright turns out that you are using version prior to 2016b so use bsxfun() with rdivide for ./ and times for * appropriately.
Asir Tushar
Asir Tushar am 8 Dez. 2018
I am using an older version .
Error using +
Matrix dimensions must agree.
Error in Thesis (line 13)
d1=(log(S/K)+(( r + (sigma.^2)/2)*(T-time)))./(sigma*sqrt(T - time)) ;

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by