index must be a positive integer or logical.

1 Ansicht (letzte 30 Tage)
Arman Kam
Arman Kam am 24 Jul. 2012
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
  3 Kommentare
Arman Kam
Arman Kam am 24 Jul. 2012
it is nothing important dear walter.
Jan
Jan am 24 Jul. 2012
Even more, Arman, it is not useful. The less confusing the posted code, the more likely is a valuable answer.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Titus Edelhofer
Titus Edelhofer am 24 Jul. 2012
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
  3 Kommentare
Jan
Jan am 24 Jul. 2012
Bearbeitet: Jan am 24 Jul. 2012
Then you have a typo in your code. Titus' line is correct.
Arman Kam
Arman Kam am 24 Jul. 2012
Thanks dear Titus it worked for the main code.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Geology finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by