Issue with && in matrix operation.
5 次查看(过去 30 天)
显示 更早的评论
Hi, i have a problem with the && operators, which it cannot operate the following code:
i = noTier1 + 1;
while i ~= (numNodes + 1)
x = round((area_length - 1) * (rand(10,1) - 0) / (1 - 0) + 1);
y = round((area_width - 1) * (rand(10,1) - 0) / (1 - 0) + 1);
% measure distance between x,y and base station
A = squareform( pdist([x - baseStation.x, y - baseStation.y]) );
A(A > edges) = 0;
if A > tier1Radius && A < tier2Radius
node(i).x = x;
node(i).y = y;
node(i).energy = 1;
node(i).id = i;
node(i).tier = 2;
node(i).pch = 0;
node(i).sch = 0;
node(i).residual = 1;
node(i).centrality = rand;
node(i).commCost = 0;
i = i + 1;
end
end
The error:
Operands to the || and && operators must be convertible to logical scalar values.
Error in MAPmm (line 94)
if A > tier1Radius && A < tier2Radius
Here the input
A = carry matrix value.
noTier1 = 25;
numNodes = 100;
area_length = 100;
area_width = area_length;
baseStation.x = 50;
baseStation.y = 50;
tier1Radius = 25;
tier2Radius = 50;
How can i solve this problem, pls advice me.
Thanks sir.
4 个评论
Walter Roberson
2018-10-2
You just set some A locations to a value, and then you want to test if they ALL satisfy the condition?
Your squareform pdist is returning a 2d array, not a scalar.
回答(2 个)
the cyclist
2018-10-2
I suggest that you carefully read the documentation for these "short-circuit" logical operators. They do not operate on vectors -- only scalars.
I'm not sure what you expect they will do, so I'm not sure what to recommend as a replacement. If you describe what you intend, someone can probably help.
2 个评论
Walter Roberson
2018-10-2
It would, for example, help if there was a response to https://www.mathworks.com/matlabcentral/answers/421474-how-to-perform-arithmetic-operation-in-pdist#comment_616298
Walter Roberson
2018-10-2
You can change the && to &
However remember that there is an implicit all() when testing in if or while so you would be testing whether the condition held for ALL members of A.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!