How can i solve "Index exceed the number of array problem(1)

2 views (last 30 days)
t=0:0.1:800;
n=800;
Nddotin=500;
Nddotpen=8.9;
Nddotdep=Nddotin*nfilt;
Nddotsur=Nddotdep*(1-nanti);
for i=1:n+1
Nddotexi(1)=166;
Nddotexi(i+1)=((-1/t(i+1)-t(i))+r-fent+((1/(t(i+1)-t(i)))*(1/(t(i+1)-t(i))-2*(r-fent)+((4*r)/Nddotmax)*(Nddotexi(i)+Nddotsur(i+1)-Nddotsur(i)))+(r-fent)^2)^(0.5))/(2*r/Nddotmax);
Nddotent=fdotent*vmed*Nddotexi(i+1);
Nddotout=Nddotent+Nddotpen;
end
figure(1)
plot(t,Nddotout,'r*',t,Nddotent,'k*',t,Nddotpen,'g*');
xlable=('time'); ylabel=('Bioaerosol');
hold on; grid on;
%The bold sentence is the problem how can i solve that
  3 Comments
Chunru
Chunru on 23 Aug 2022
Can you post the above code (instead of screen capture)?
주선 문
주선 문 on 23 Aug 2022
clc;clear all;
p=2.7;a2=0.002;L=0.015;FA=0.35;MA=10;df=3*10^(-6);W=25*10^(-3); %filter2
Pe=df*L/W^2; Fk=(4*a2-(a2)^2-3)/4-(log(a2))/2;
r=0.0012; fdotent = 3*10^(-10); vmed= 1/(10*(1-a2));Cddotdep=0;%Cin=0
fent=fdotent*vmed;
ad=0;% ad=(Cddotdep*t)*(p*W);
a=a2+ad;
S=(4*L*a)/pi*df; Nddotmax=1.15*10^(7);
nanti=0.5; nfilt=0.5;
n=799;
Nddotin=500;
Nddotpen=8.9;
Nddotdep=Nddotin*nfilt;
Nddotsur=Nddotdep*(1-nanti);
for i=1:n+1
Nddotexi(1)=166;
Nddotexi(i+1)=((-1/0.1)+r-fent+((1/0.1)*(1/0.1)-2*(r-fent)+((4*r)/Nddotmax)*(Nddotexi(i)+Nddotsur(i+1)-Nddotsur(i)))+(r-fent)^2)^(0.5)/(2*r/Nddotmax);
Nddotent=fdotent*vmed*Nddotexi(i+1);
Nddotout=Nddotent+Nddotpen;
end
figure(1)
plot(t,Nddotout,'r*',t,Nddotent,'k*',t,Nddotpen,'g*');
xlable=('time'); ylabel=('Bioaerosol');
hold on; grid on;

Sign in to comment.

Accepted Answer

Chunru
Chunru on 23 Aug 2022
Not sure what you want to do with the code without background info. It seems that you need to specify "Nddotsur" as a vector.
p=2.7;a2=0.002;L=0.015;FA=0.35;MA=10;df=3*10^(-6);W=25*10^(-3); %filter2
Pe=df*L/W^2; Fk=(4*a2-(a2)^2-3)/4-(log(a2))/2;
r=0.0012; fdotent = 3*10^(-10); vmed= 1/(10*(1-a2));Cddotdep=0;%Cin=0
fent=fdotent*vmed;
ad=0;% ad=(Cddotdep*t)*(p*W);
a=a2+ad;
S=(4*L*a)/pi*df; Nddotmax=1.15*10^(7);
nanti=0.5; nfilt=0.5;
n=799;
Nddotin=500;
Nddotpen=8.9;
Nddotdep=Nddotin*nfilt;
Nddotsur=Nddotdep*(1-nanti);
% Initialize Nddotexi
Nddotexi = zeros(n+1, 1);
Nddotexi(1)=166;
for i=1:n % not n+1
%Nddotexi(i+1)=((-1/0.1)+r-fent+((1/0.1)*(1/0.1)-2*(r-fent)+((4*r)/Nddotmax)*(Nddotexi(i)+Nddotsur(i+1)-Nddotsur(i)))+(r-fent)^2)^(0.5)/(2*r/Nddotmax);
% Note that Nddotsur is not a vector
Nddotexi(i+1)=((-1/0.1)+r-fent+((1/0.1)*(1/0.1)-2*(r-fent)+ ...
((4*r)/Nddotmax)*(Nddotexi(i)+Nddotsur(i+1)-Nddotsur(i)))+(r-fent)^2)^(0.5)/(2*r/Nddotmax);
Nddotent=fdotent*vmed*Nddotexi(i+1);
Nddotout=Nddotent+Nddotpen;
end
Index exceeds the number of array elements. Index must not exceed 1.
figure(1)
plot(t,Nddotout,'r*',t,Nddotent,'k*',t,Nddotpen,'g*');
xlable=('time'); ylabel=('Bioaerosol');
hold on; grid on;
  1 Comment
주선 문
주선 문 on 23 Aug 2022
Edited: 주선 문 on 23 Aug 2022
a2=0.002;%p=2.7;L=0.015;FA=0.35;MA=10;df=3*10^(-6);W=25*10^(-3); %filter2
%Pe=df*L/W^2; Fk=(4*a2-(a2)^2-3)/4-(log(a2))/2;
r=0.0012; fdotent = 3*10^(-10); vmed= 1/(10*(1-a2));Cddotdep=0;%Cin=0
fent=fdotent*vmed;
ad=0;% ad=(Cddotdep*t)*(p*W);a=a2+ad;S=(4*L*a)/pi*df;
Nddotmax=1.15*10^(7);
nanti=0.5; nfilt=0.5;
n=input('input:');
Nddotin=500;
Nddotpen=8.9;
Nddotdep=Nddotin*nfilt;
Nddotsur=Nddotdep*(1-nanti);
% Initialize Nddotexi
Nddotexi = zeros(n+1, 1);
Nddotsur = zeros(n+1, 1);
Nddotexi(1)=166;
for i=1:n
Nddotexi(i+1)=((-1/0.1)+r-fent+((1/0.1)*(1/0.1)-2*(r-fent)+ ...
((4*r)/Nddotmax)*(Nddotexi(i)+Nddotsur(i+1)-Nddotsur(i)))+(r-fent)^2)^(0.5)/(2*r/Nddotmax);
Nddotent=fdotent*vmed*Nddotexi(i+1);
Nddotout=Nddotent+Nddotpen;
end
figure(1)
plot(t,Nddotout,'r*',t,Nddotent,'k*',t,Nddotpen,'g*');
xlable=('time'); ylabel=('Bioaerosol');
hold on; grid on;
Nddotout is Nddotent+Nddotpen
Nddotout is not change

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!