Hi! Every one
I have an array O = [11 12 13 21 14 22 23 31 25 24 32 33 34] ;
I want to swap a value with its adjacent value at two positions.The postions are defined by vector
v=[5 10]
I want output to be like
out = [11 12 13 21 22 14 23 31 25 32 24 33 34];
The number 14 is replaced by its adjacent 22 at postion 5.
Similarly,
The number 24 is replaced by its adjacent 32 in posioton 10.

Antworten (2)

Guillaume
Guillaume am 1 Feb. 2019

4 Stimmen

Trivially done:
O = [11 12 13 21 14 22 23 31 25 24 32 33 34];
v = [5 10];
O([v;v+1]) = O([v+1;v]); %v must be a row vector for this to work.

2 Kommentare

Luna
Luna am 1 Feb. 2019
+1
madhan ravi
madhan ravi am 1 Feb. 2019
O([v v+1])=O([v+1 v]) % also this works

Melden Sie sich an, um zu kommentieren.

Luna
Luna am 1 Feb. 2019

0 Stimmen

Hi Mazhar Ali,
Try this below:
for i = 1:numel(v)
temp = O(v(i));
replacemnt = O(v(i)+1);
O(v(i)) = replacemnt;
O(v(i)+1) = temp;
end

Kategorien

Mehr zu Matrices and Arrays finden Sie in Hilfe-Center und File Exchange

Tags

Gefragt:

am 1 Feb. 2019

Kommentiert:

am 1 Feb. 2019

Community Treasure Hunt

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

Start Hunting!

Translated by