MATLAB: Array indices must be positive integers or logical values. This error is coming at line:while C(counter)> C(j) && abs(f)>.00001. Please help me out.

array indices error problem

D=800; d=[1 600 09 0.02 300 500; 2 500 10 0.04 100 400; 3 400 06 0.08 050 200]; g=1; P1=400; P2=300; P3=100; del_C1=.04*P1-.16*P3+2; del_C2=.08*P2-.16*P3+4; counter=1; C=15900; while C(counter)> C(j) && abs(f)>.00001 if sum(del_C1,del_C2)<0 && del_C1>del_C2 P1=P1+1; P2=P2; P3=P3-1; P=[P1;P2;P3]; f=D-sum(P); C=d(:,2)+d(:,3).*P+d(:,4).*P.*P; counter=counter+1; j=counter;

Best Answer

You forgot to assign j before the loop. Fix:
D=800;
d=[1 600 09 0.02 300 500;
2 500 10 0.04 100 400;
3 400 06 0.08 050 200];
g=1;
P1=400;
P2=300;
P3=100;
del_C1=.04*P1-.16*P3+2;
del_C2=.08*P2-.16*P3+4;
counter=1;
C=15900;
j=counter;
while C(counter)> C(j) && abs(f)>.00001
if sum(del_C1,del_C2)<0 && del_C1>del_C2
P1=P1+1;
P2=P2;
P3=P3-1;
P=[P1;P2;P3];
f=D-sum(P);
C=d(:,2)+d(:,3).*P+d(:,4).*P.*P;
counter=counter+1;
j=counter;
end
end
msgbox('Done');
Also, read this link so you know how to format your code in Answers.
Related Question