MATLAB: Hello Friends, I am trying to execute a simple code but keep getting the following error message: Subscript indices must either be real positive integers or logicals. I get the error message for the code in italics. Kindly help. Thanks…

real positive integers or logicalssubscript indices

SOC(1)=(SOCmn +((IBAT(1)*ebc*1)/(cbat))); if SOC(1)>SOCmx SOC(1)=SOCmx; end for y=1:8760 SOC(y)=(SOC(y-1)*(1-dh) + Pgen(y)-(Pload(y)/EFFINV))*ebc; if SOC(y)>SOCmx SOC(y)=SOCmx; end end

Best Answer

This is the problem:
for y=1:8760
_SOC(y)=(SOC(y-1)*(1-dh) + ...
In the first iteration through the loop, ‘y’ is 1, so (y-1) is 0.
Zero is not a positive integer. Positive integers are integers greater than 0.