Hello i want to swap elements in a matrix.I want to do it to elements of the same row and to elements of differents rows. Please help.Thank you

2 Comments

An example would be useful, although the usual method for swapping elements is to use a temporary variable to store one while you copy the other over the top of it and then copy from the temporary variable into the 2nd location.
To be more specific i want to execute local search to a matrix like this one
A=[1 4 7 16 32 48 1;
1 5 6 23 1 0 0;
1 9 31 8 2 1 0;
1 11 19 66 1 0 0]
The the elements of the matrix are arcs(for example 9-31 is the arc between nodes 9 and 31),so i want to make enough exchanges to reduce the cost.I can do exchanges of the same row like the 9 with 31 and i will the 3 row 1 31 9 8 2 1 0 and the other rows as they were,and i can do exchanges of different rows like the node 9 with the node 11. Is there any command to swap,or i have to use temp variables?

Sign in to comment.

 Accepted Answer

the cyclist
the cyclist on 20 Mar 2015
Edited: the cyclist on 10 May 2018
% A matrix:
A = magic(3);
% Swap the first and second elements of the first column:
A([1 2]) = A([2 1])
% Swap the first and second elements of the third column:
A([7 8]) = A([8 7])
% Swap the first and third elements of the first row:
A([1 7]) = A([7 1])
Note that I needed to take advantage of linear indexing.

4 Comments

Thank you for your respond.It is not exactly what i want to do.I have answerd previous what i want.More specifically i have a matrix of arcs and i want to execute local search exchanges to minimize the cost (that i have in different variable).
You can use my technique, as long as you understand the linear indexing page I cited.
For example, to swap 9 and 31 in your example, use
A([11 7]) = A([7 11])
The number 9 is in the 7th position (using linear indexing), and the number 31 is in the 11th position.
A([1 7]) = A([7 1]) actually swap the first and third elements of the first row, not "Swap the first and second elements of the first row"
Oops, there were actually a couple confusing typos in my post. I have edited to correct them. Thanks for pointing that out.

Sign in to comment.

More Answers (1)

Ahamed Tuani
Ahamed Tuani on 13 Nov 2017
Hi,
I have been looking into local search as well. Giannakis, I know its quite q while ago but have you figure out how to do it?
The cyclist and fellow members, I have a question..say the path is 1-31-9-2-10-1..I want to swap 9 and 2 so that the new path will be 1-31-2-9-10-1. How can I do this? Tried indexing (maybe a dumb way) i.e init_tour((1:2):(4):(3):6) to get the new tour but its not working. Any help will be greatly appreciated. Thanks.

Categories

Find more on 2-D and 3-D Plots in Help Center and File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!