MATLAB Answers

array indices must be positive integers or logical values.

i am getting this error
Array indices must be positive integers or logical values.
Error in tabular/dotParenReference (line 108)
b = b(rowIndices);
Error in tryout (line 12)
z1 = sum(y.resource (p:T).^2)
for the following lie of code
z1 = sum(y.resource (p:T).^2)
here i would be taking values from variable resource in table y, for which sum till end day of project(t) whose square is found.
i hope this explains the above line from code.

  댓글 수: 2

That suggests that p is not a positive integer.
function[fitness_value] = tryout(x)
T = 18; %total number of days to complete project
oo = readtable ('datasheet.xlsx');
x1 = round(rand() );
p = bin2dec(num2str(x1))
x2 = round(rand() );
q = bin2dec(num2str(x2))
x3 = round(rand() );
r = bin2dec(num2str(x3))
z1 = sum(resource (p:T).^2)
z2 = sum(resource (q:18).^2)
z3 = sum(resource (r:18).^2)
A = [ z1 z2 z3 ];
fitness_value = max(A);
fitness_value = -1 * fitness_value;
end
this the code, here the value taken is binary so cannot be non positive
any suggestions please

로그인 to comment.

답변 수: 1

John D'Errico 님의 답변 14 Oct 2019
John D'Errico 님이 편집함. 14 Oct 2019
 채택된 답변

p is sometimes zero. sometimes it is one. how you are creating p is a bit silly, as there is absolutely no reason to use bin2dec, and num2str is also a bit over the top. For example, I tried it twice, and I see:
>> x1 = round(rand() );
p = bin2dec(num2str(x1))
p =
1
>> x1 = round(rand() );
p = bin2dec(num2str(x1))
p =
0
But then you have the line:
z1 = sum(y.resource (p:T).^2)
if sometimes p is zero, then you create a vector p:T. Whenever p is zero, then p:T will be a vector that STARTS at zero.
When p is zero, can you use that vector as an index into the variable y.resource?
NO.

  댓글 수: 1

thank you so much your explanation is of great help
i have a doubt i have to choose different values for p but it must be less then 18
so i can do square of resources from that day till end
so i used rand funtion
can u provide any suggestions?

로그인 to comment.



Translated by