【问题标题】:how to select each row for different operation from a matrix如何从矩阵中选择每一行进行不同的操作
【发布时间】:2016-09-06 10:08:14
【问题描述】:

我有一个序列

A = 1:5

然后我做了它的随机排列

B = perms(A)
C = B(randperm(size(B,1)), :)

然后我随机抽取5序列的样本如下

sample = C(1:5,1:4)

然后我从样本中取出一个随机序列,如下所示

randomRow = sample(randi(size(sample,1)),:)

我使用上面的随机行进行操作。现在我被困在如何从样本中选择另一行并对其执行相同的操作,直到我对样本中的所有行进行操作并且每行在处理后不会从样本中重复。

【问题讨论】:

    标签: matlab random-sample


    【解决方案1】:

    您可以使用以下代码:

    For i=randperm(size(sample,1))
        Rand_row=sample(i,:)
        %// operate on Rand_row
    End
    

    【讨论】:

      【解决方案2】:

      为什么不直接使用与randperm 相同的技巧来打乱sample 的行,然后遍历它们?

      sample_shuffled = sample(randperm(5),:)
      for s = 1:5
          randomRow = sample_shuffled(s,:)
          %// Operate on randomRow
      end 
      

      【讨论】:

      • Dan,如何将每行操作的结果放在不同的地方,以便最后我可以看到我在每一行上执行的每个操作的输出。 ?
      • 在循环中执行类似outputs(s) = ... 的操作,但不要忘记在循环之前为outputs 预分配内存,以避免在循环中增加变量
      猜你喜欢
      • 2015-08-22
      • 2023-03-07
      • 2016-07-06
      • 1970-01-01
      • 1970-01-01
      • 2018-12-13
      • 1970-01-01
      • 2022-01-19
      • 2012-03-02
      相关资源
      最近更新 更多