【问题标题】:Choose elements from array randomly in matlab and store the remain element在matlab中从数组中随机选择元素并存储剩余元素
【发布时间】:2016-09-03 12:06:41
【问题描述】:

我的数组包含 1 列 225 行,我想从这些元素中随机选择 170 个元素并将其存储在另一个数组中,并将剩余元素存储在另一个数组中,我使用此代码随机选择元素,但我没有不知道如何将剩余元素 (55) 存储在另一个数组中!

代码:我的原始数组 A

msize = numel(A);
firstpart = A(randperm(msize, 170))

secondpart = !!!!! ( remain elements ) % This is my question 

【问题讨论】:

    标签: arrays matlab matrix random


    【解决方案1】:

    不要丢弃其他元素,只需将它们全部排列起来,然后然后对数组进行分区:

    msize = numel(A);
    allperm = A(randperm(msize));
    firstpart = allperm(1:170);
    secondpart = allperm(171:end);
    

    【讨论】:

      【解决方案2】:

      您可以使用布尔索引。

      A = rand(255,1); % just generating an example matrix
      indices = false(size(A));
      indices(randsample(1:numel(A),170)) = true; % select what to keep
      firstpart = A(indices);
      secondpart = A(~indices);
      

      【讨论】:

      • 我喜欢这个想法,特别是如果保持元素排序很重要的话。
      • 哈哈,我喜欢 (+1) 你的想法,它非常优雅 :) 我之前遇到过一些情况,布尔索引也因其他原因而有用,但这在很大程度上取决于其他原因将在代码中进行。
      • 我会试试这个想法:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-23
      • 2012-01-23
      • 2012-10-13
      相关资源
      最近更新 更多