MATLAB: Index must be a positive integer or logical.

errorindex

Hi I am using matlab for earthquake hazard analysis. i have a problem with my for loop and i cant find out whats the problem.
if true
for aa=Mmin:0.1:Mmax1
Mmean1=aa+0.05;
r1=sqrt(R1^(2)+Davg1^(2));
Freq1=NMmin1*(exp(-beta1*(aa-Mmin))-exp(-beta1*((aa+0.1)-Mmin)))/(1-exp(-beta1*(Mmax1-Mmin)));
loga1=log10(PGA);
logamean1=c1+c2*Mmean1+c3*log10(r1)+c4*r1;
lognormal1=1-normcdf(loga1,logamean1,sigma);
Ny1=Freq1*lognormal1;
if aa==Mmin;
Nymatrix((aa-Mmin+DM)/DM,1)=Ny1;
elseif aa~=Mmin;
Nymatrix((aa-Mmin+DM)/DM,1)=Ny1+Nymatrix((aa-Mmin)/DM,1);
end
end
??? Attempted to access Nymatrix(1,1); index must be a positive integer or logical.
end
and also when i want to figure out what's the problem and try following code, i got this error again.
if true
for aa=Mmin:0.1:Mmax1
gg((aa-Mmin+DM)/DM,1)=aa;
??? Attempted to access gg(2,1); index must be a positive integer or logical.
end
end
please help me as soon as possible if you can. Thanks

Best Answer

Hi,
it looks as if
(aa-Mmin+DM)/DM
is not an integer. If it should be, round would help:
gg(round((aa-Mmin+DM)/DM),1)=aa;
Titus