匹配和消除双向量的元素

时间:2015-01-08 08:59:49

标签: matlab vector

我有一个输入向量,如:

[1.3, 2.2, 2.3, 4.2, 5.1, 3.2, 5.3, 3.3, 2.1, 1.1, 5.2, 3.1]

然后我想检查x.1和x.2以及x.3和x.y是否在向量中,如果不存在至少3个具有匹配x值的y值则丢弃。所以示例向量看起来像:

[2.2, 2.3, 5.1, 3.2, 5.3, 3.3, 2.1, 5.2, 3.1] 

1.31.14.2由于只有2和1 x值而被删除。它必须适用于任何长度的矢量。我刚开始尝试从指南中学习Matlab,但我无法完成这个问题:(

1 个答案:

答案 0 :(得分:2)

你可以

  1. 计算x;
  2. 的整数部分
  3. 计算每个获得的整数部分的出现次数,以及x的每个值关联其相应的次数;
  4. 仅保留x的值,其整数部分至少出现n=3次。
  5. 代码:

    x = [1.3 2.2 2.3 4.2 5.1 3.2 5.3 3.3 2.1 1.1 5.2 3.1]; %// data
    n = 3;                                                 %// min required number
    xf = floor(x);                                         %// step 1
    [ii, jj] = histc(xf, unique(xf));                      %// step 2
    result = x(ismember(jj, find(ii>=n)));                 %// step 3