10 views (last 30 days)

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))

end

end

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)) ;

end

end

h1=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];

end

end

For the previous example, where " w " is a matrix 2x3 , everything works. However, when I want to implement this function for a different input matrix data " w " of dimension 253x100 , 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

KALYAN ACHARJYA
on 15 Jul 2019

Edited: KALYAN ACHARJYA
on 15 Jul 2019

Yes no error with

w=rand(253,100);

Check:

>> whos w

Name Size Bytes Class Attributes

w 253x100 202400 double

KALYAN ACHARJYA
on 15 Jul 2019

Equation solved.

fsolve completed because the vector of function values is near zero

as measured by the default value of the function tolerance, and

the problem appears regular as measured by the gradient.

<stopping criteria details>

h =

0.0100

h =

0.0100 0.0100

h =

0.0100 0.0100 0.0100

h =

0.0100 0.0100 0.0100

0.0100 0 0

h =

0.0100 0.0100 0.0100

0.0100 0.0100 0

h =

0.0100 0.0100 0.0100

0.0100 0.0100 0.0100

KALYAN ACHARJYA
on 15 Jul 2019

Second case, I dont expect any error in this case, as you defind

k=2;

m=3;

for i=1:k

for j=1:m

hzrd(i,j)=exp(a(i)+b*w(i,j)) ;

end

....

i iterate from 1 to 2 and j iterate 1 to 3, so the w elements are there with those indices.

Opportunities for recent engineering grads.

Apply Today
## 1 Comment

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/471795-index-exceeds-array-bounds-error#comment_724694

⋮## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/471795-index-exceeds-array-bounds-error#comment_724694

Sign in to comment.