【问题标题】:looping trouble in MatlabMatlab中的循环问题
【发布时间】:2013-05-04 18:02:04
【问题描述】:

假设给定一个矩阵,比如 d。

d=[1.32 4.354 6.78 4.56; 
   4.65 3.23  2.34 8.9; 
   2.32 7.65  4.98 2.78]

我需要选择没有两个相同的值。假设我想使用 Matlab 以 1 的增量选取 5 个值。

for ii=1:5
  % pick value one by one such that no two values chosen are same
end

循环应该像这样运行:

  ii=1, d'=4.354
  ii=2, d'=4.354 2.32

不应该这样:

   ii=2, d'=4.354 4.354 

【问题讨论】:

  • 如果您解释一下如何d 中选择值,这可能会有所帮助。你想系统地通过d工作吗? IE。 i=1, d'=1.32; i=2,d'=1.32,4.354, etc
  • 矢量化,不要循环。不打电话时会提供解决方案。
  • 我不需要系统地选择,它可以是随机的。

标签: matlab loops permutation random-sample


【解决方案1】:

只需使用randperm 创建一个包含 5 个随机非重复数字的 linear index

d(randperm(numel(d),5))

【讨论】:

    【解决方案2】:

    如果您想为 d 选择唯一值,只需在选择前使用 unique 删除重复:

     ud = unique( d(:) ); % note the (:) - we want element-wise unique and not row-unique
    
     ud(1:5) % picks first fiver unique elements
    

    【讨论】:

      猜你喜欢
      • 2021-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-20
      相关资源
      最近更新 更多