MATLAB Answers

array indices must be positive integers or logical values.

조회 수: 24(최근 30일)
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

Walter Roberson
Walter Roberson 14 Oct 2019
That suggests that p is not a positive integer.
aarthy reddy R
aarthy reddy R 14 Oct 2019
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.

채택된 답변

John D'Errico
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

aarthy reddy R
aarthy reddy R 14 Oct 2019
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.

추가 답변(0개)

이 질문에 답변하려면 로그인을(를) 수행하십시오.


Translated by