【问题标题】:(MATLAB) How can I randomly sample a row from a matrix without replacement? [duplicate](MATLAB)如何从矩阵中随机抽取一行而不进行替换? [复制]
【发布时间】:2015-08-24 09:47:22
【问题描述】:

所以,我有一个名为 matrix1 的矩阵(维度 = 1280x5,每个元素都是一个数字)。我有另一个矩阵,称为 matrix2,它具有相同的维度并且包含所有零)。这就是我想要做的:从matrix1中随机选择一行而不替换并将其插入matrix2的第一行。从矩阵 1 中随机选择的下一个行将进入矩阵 2 的第 2 行,依此类推,直到矩阵 1 的所有 1280 行都移至矩阵 2。值得注意的是,我希望所有这一切都使用具有 1280 次迭代的 for 循环来发生。在每次迭代中,将随机选择矩阵中的 1 行而不替换并放入矩阵 2。如果您有任何建议,请告诉我。

谢谢!

G

【问题讨论】:

  • 可以不用for循环,for循环是必要的吗?
  • 我正在建立一个著名的心理学实验,包括 1280 次试验,所以不使用 for 循环似乎不可行......但我可能是错的,因为我仍然是MATLAB初学者..还有其他建议吗?

标签: matlab matrix indexing


【解决方案1】:

您可以通过适当的行索引来做到这一点:

idx = randperm(size(mat1,1));   %// Random row index
mat2 = mat1(idx, :);

【讨论】:

  • 谢谢!我什至没有考虑一次随机重新排序所有行。
猜你喜欢
  • 2021-07-19
  • 1970-01-01
  • 1970-01-01
  • 2015-11-17
  • 1970-01-01
  • 2011-12-30
  • 2014-06-06
  • 1970-01-01
  • 2014-12-02
相关资源
最近更新 更多