Why do I get a wrong answer when I use FIND function in this case?
2 views (last 30 days)
Show older comments
I have a graph structure "G_dmg.Nodes.Load" which has typically 40 "-inf" values and 10 other numbers ~= -inf.
In my script:
inActive = find(G_dmg.Nodes.Load==-inf);
for ii = 1:length(inActive)
b = neighbors(G_dmg,inActive(ii));
idx = find(G_dmg.Nodes.Load(b)~= -inf);
Load = G_dmg.Nodes.Load(idx);
end
So, I'm trying to find the indices of inActive nodes' neighbors that do not have -inf Load values. FIND function is not giving me back the correct indices.
say b = [10 11 2 3 4] and the 10th, 11th entries in G_dmg.Nodes.Load ~=-inf but 2nd, 3rd, 4th have -inf values. idx variable in my script is giving me back 1 2 which are basically are the first and second entries in b.
0 Comments
Accepted Answer
Rik
on 17 Jun 2021
When you subindex a variable before using find, it will return the indices relative to that subindexed variable. This is because find doesn't know about the indexing.
This might fix the problem:
idx=b(idx);
More Answers (1)
See Also
Categories
Find more on Graph and Network Algorithms in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!