![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/199396/image.png)
How to obtain next/previous node in a tour represented as an array (=permutation of size n)
1 次查看(过去 30 天)
显示 更早的评论
I have been struggling to find an efficient solution to my problem. I am working with tours, which basically are permutations of the numbers 1 to n (n is given).
Now I want to code an anonymous function* that would work as follows:
tour = [1 8 9 7 4 5 2 10 6 3];
Next = nextNode(tour,2);
Next2 = nextNode(tour,3);
Prev = prevNode(tour,10);
Prev2 = prevNode(tour,1);
% result should be:
% Next = 10
% Next2 = 1
% Prev = 2
% Prev2 = 3
Any suggestions and solutions are welcome, thank you!
1 个评论
madhan ravi
2018-12-19
编辑:madhan ravi
2018-12-19
Birdman why do you keep deleting my answer? You deleted it three times. What's wrong? It's not nice to delete answers.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/199396/image.png)
采纳的回答
madhan ravi
2018-12-19
编辑:madhan ravi
2018-12-19
Note: your prev should be 2 not 6 maybe you made a typo.
tour = [1 8 9 7 4 5 2 10 6 3];
Next = nextNode(tour,2)
Next2 = nextNode(tour,3)
Prev = prevNode(tour,10)
Prev2 = prevNode(tour,1)
function Result = nextNode(tour,n)
idx=find(tour==n);
if idx==numel(tour)
Result = tour(1);
else
Result = tour(idx+1);
end
end
function Result1=prevNode(tour,n)
idx=find(tour==n);
if idx==1
Result1=tour(end);
else
Result1=tour(idx-1);
end
end
Gives:
Next =
10
Next2 =
1
Prev =
2
Prev2 =
3
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!