匹配和消除双精度向量的元素

Matching and eliminating elements of a vector of doubles

我有一个输入向量,例如:

[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 个 y 值与匹配的 x 值则丢弃存在。所以示例向量看起来像:

[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. 计算 x 的整数部分;
  2. 统计每个得到的整数部分出现的次数,并给x的每个值关联其对应的次数;
  3. 仅保留整数部分至少出现 n=3 次的 x 的值。

代码:

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