Swap k elements in an n x1 vector

4 次查看(过去 30 天)
Josue Ortega
Josue Ortega 2022-11-16
评论: Stephen23 2022-11-16
Hi I have a vector which is a random permutation of [1:n]. Say
x=randperm(n)
I want to create a vector that is equal to x, but different in at most c positions. For example, if c=2 and
x=[1 2 3 4 5 6]
I want to create a vector that looks like
x=[3 2 1 4 5 6]
Any suggestions?
  1 个评论
Stephen23
Stephen23 2022-11-16
Do you require a strict derangement of the swapped values (i.e. swapped values cannot be randomly returned to the same location) or is it permitted that values might be returned to the same location?

请先登录,再进行评论。

回答(1 个)

Rik
Rik 2022-11-16
Create a logical vector with at most c true elements. Then permute the values at those positions and use logical indexing to store them back into the original array.

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

标签

产品

Community Treasure Hunt

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

Start Hunting!

Translated by