move element in array
26 次查看(过去 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 个评论
回答(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
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!