Dear all,
I wrote this simple code:
%input data
SP=[exp(-(0.01*0.5)/(1-0)); exp(-(0.01*1)/(1-0))]; m=3; k=2;b=0.01;dt=0.5;w=[100 200 300; 100 300 400];a0=[0 0]; % guess per fsolve
fun=@(a) (get_survivalprobability(a,b,w,dt,m,k)-SP); [a] = fsolve(fun,a0); % find f(a)=0 ;
for i=1:k % find hazard rates with the new parameters a
for j=1:m h(i,j)=exp(a(i)+b*w(i,j)) endend
whose main function that I implemented is:
function [SP_Simulation]=get_survivalprobability(a,b,w,dt,m,k) for i=1:k for j=1:m hzrd(i,j)=exp(a(i)+b*w(i,j)) ; endendh1=hzrd(1,:) ;SP1=(sum(exp(h1*-dt)))/m ; % find a for the first row vector
for i=1:k-1 h=(hzrd(i,:)+hzrd(i+1,:))*-dt; SP_others=sum(exp(h),2)/m ; SP_Simulation=[SP1;SP_others];endend
For the previous example, where " w " is a matrix 2×3 , everything works. However, when I want to implement this function for a different input matrix data " w " of dimension 253×100 , the following error displays:
" Index exceeds array bounds. Error in get_survivalprobability (line 6)
hzrd(i,j)=exp(a(i)+b*w(i,j)) ; "
Does anyone know how can I fix it, please?
Thank you in advance.
Regards,
Martina
Best Answer