3 views (last 30 days)

Show older comments

I keep getting the above error when i run the below code. I have no clue on how to fix it. Its is pretty short code.

If anyone can assist, i will appreciate.

Thanks

%%

mo=4*10^-11; %initial particle mass in gCOD

Mx=7.2*10^-11; %maximum particle biomass

rho=32000; %maximum density of particles in gCOD/cubic metre of particles

Rp=(3*mo/(4*pi*rho))^1/3;

Rn=Rp;

%%

k=1*10^-6;

x1(1,1,1)=k;%initial pos AOB

x2=x1+1*10^-6; %initial pos Nitrobacter

x3=x2+1*10^-6; %initial pos Nitrospira

x4=x3+1*10^-6; %initial pos CMX

x5=x4+1*10^-6; %initial pos AMX

x6=x5+1*10^-6; %initial pos het

sum1(1,1,1)=0.0;

sum2=0.0;

cell=0.8*10^-6;

r=0:7.5;

l=0:14;

c=0:109.8232;

deltaxj(1,1,1)=k;

x1New(1,1,1)=x1;

for i=1:length(r)

for ii=1:length(l)

for iii=1:length(c)

dn(i,ii,iii)=sum1+(x1-x1New)^2;

deltaxj(i,ii,iii)=sum1+(x1-x1New)*(k.*(Rn+Rp)-dn)./dn;

x1New(i,ii,iii)=x1-deltaxj;

end

end

end

Daniel Pollard
on 16 Apr 2021

I haven't run it, but I think your code will error on the line

deltaxj(i,ii,iii)=sum1+(x1-x1New)*(k.*(Rn+Rp)-dn)./dn;

because deltaxj(i,ii,iii) is a number, so has one element, and dn is an array which grows with every iteration. You can't assign an array element to be equal to an array.

I suspect you intended

deltaxj(i,ii,iii)=sum1+(x1-x1New)*(k.*(Rn+Rp)-dn(i,ii,iii))./dn(i,ii,iii);

As a side note, please choose better names for your loop indices. Firstly, i is a bad variable name because it already has a built-in value, and secondly, it's difficult to tell at a glance what the difference between (ii,iii) and (iii,i) is (for example). If you really need to use that many nested loops (rather than vectorising your code), I'd suggest using k1, k2, k3, or similar.

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

Start Hunting!