【问题标题】:Generate a vector with elements that contain a fixed number of unique values生成一个向量,其元素包含固定数量的唯一值
【发布时间】:2012-11-15 15:44:05
【问题描述】:

假设我有一个向量 一个=

 3     5     3     3     2     2     4     2     6

我需要生成一个新向量 B,它将包含来自起始向量 A 的所有这些值,这将产生唯一数量的 n 个元素(假设 n=3,出于本示例的目的)。新向量应该是 B =

 3     5     3     3     2

从向量 A 的第五个元素开始,我们有 3 个唯一值 (3,5,2)。 实际向量要大得多,所以我宁愿需要一个通用解决方案,最好避免循环。有任何想法吗?提前致谢

【问题讨论】:

    标签: matlab indexing unique sorting


    【解决方案1】:

    您可以使用unique 解决此问题。但是,请务必使用'stable' 选项。

    A = [3     5     3     3     2     2     4     2     6]; 
    n = 3; 
    
    [x, id] = unique(A,'stable'); 
    
    B = A(1:id(3))
    

    这会导致

    B =
    
         3     5     3     3     2
    

    【讨论】:

    • Matlab R2009a 无法识别“稳定”选项。
    • @R.Schifini:该选项已在 R2012a 中引入。您的解决方案也适用于早期版本。
    【解决方案2】:

    执行以下操作:

    A = [3  5  3  3  2  2  4  2  6];
    n = 3;
    
    [b,i] = unique(A,'first');
    h = sort(i);
    A(1:h(n))
    

    【讨论】:

      猜你喜欢
      • 2021-08-03
      • 1970-01-01
      • 1970-01-01
      • 2014-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多