move element in array
53 ビュー (過去 30 日間)
古いコメントを表示
Hi,
I have an array of n elements, let's say for example:
[0 1 2 3 4 5]
I want to move the position of one of the elements left or right by one, let's say:
[0 1 2 4 3 5]
How can I do this? Does indexing help?
2 件のコメント
Stephen23
2017 年 11 月 17 日
Just use indexing:
>> V = [0,1,2,3,4,5];
>> V([5,4]) = V([4,5])
V =
0 1 2 4 3 5
回答 (2 件)
Navid Mohammadzadeh
2017 年 11 月 17 日
Why do not use "circshift" command?
Look: A =
1
2
3
4
5
6
7
8
9
10
Y = circshift(A,3)
Y =
8
9
10
1
2
3
4
5
6
7
2 件のコメント
thiago rech
2020 年 11 月 13 日
Maybe that was not the answer he was looking for, but it helped me with something else really cool.
Thanks!
Christoph
2012 年 6 月 19 日
Hi,
your problem sounds wired. For what reason do you want to switch the postion of only two elements in an array?
Nevertheless I guess indexing is the only way to switch the positon of two elements. Also you need a temporary variable to store one of the objects. My solution would look like:
X = [1 2 3 4 5]; temp = X(3); X(3) = X(4); X(4) =temp;
If you need more than one time write an function with X and i (element you want to switch) as input argument and x as outputargument.
Kind regrads, CN
3 件のコメント
Christoph
2012 年 6 月 19 日
Hi Moon,
intresting idea. I'll try to write this function at the evening if the todays soccer game is not that interesting ;)
Christoph
2012 年 6 月 19 日
Just thought a further minute about your problem. I guess I would modelling mixing cards in a different way. I would divide the vector at a random position and put the first stack behind the second....that should look like this:
pos = randi([1, numberofcards-1])
stack = [stack(pos+1,end),stack(1:pos)];
put this it in a for loop and you modelled the perfect card mixer
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!