![](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 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Berlibur
am 19 Dez. 2018
Kommentiert: madhan ravi
am 19 Dez. 2018
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 Kommentar
madhan ravi
am 19 Dez. 2018
Bearbeitet: madhan ravi
am 19 Dez. 2018
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)
Akzeptierte Antwort
madhan ravi
am 19 Dez. 2018
Bearbeitet: madhan ravi
am 19 Dez. 2018
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
2 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!