【问题标题】:How to randperm k first elements of vector with its size N如何对其大小为 N 的向量的 k 个第一个元素进行 randperm
【发布时间】:2014-10-14 07:56:55
【问题描述】:

我正在使用 randperm 对向量中的元素进行随机排列。但是,我有一个问题,即我有一个大小为 N 的向量,并且我只想要该向量中的随机排列 k 个第一个元素,而 N-k 个元素没有变化。 matlab代码怎么做?

例如:

A = [1 1 1 1 0 0 0 0 0 0]
% N=10 array length; d=4 number of element equal to 1 in the first k elements, k=7

期望的输出:

A_randperm=[0 1 1 0 1 0 1 0 0 0]
% Random permutation elements of 1st to 7th, 8th to 10th elements stay the same

这是我的代码

d=4;
N=10;
k=7;
column = [ones(1,d) zeros(1,N-d)];% create random vector without permutation

% Random permutation
.... 

【问题讨论】:

  • A(1:k) = A(randperm(k));
  • @JandeGier 请作为答案发帖

标签: matlab permutation


【解决方案1】:

如评论中所述:

A(1:k) = A(randperm(k));

完成这项工作。

【讨论】:

    【解决方案2】:

    @JanDeGier 的解决方案略有不同:

    x = 1:10;
    k = 7;
    
    x = [x(randperm(k)) x(k+1:end)];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-27
      • 2014-03-02
      • 2019-08-13
      • 2015-12-02
      • 2019-11-06
      • 1970-01-01
      • 2020-08-07
      相关资源
      最近更新 更多