1

我想创建一个向量,其中包含基于另一个向量中的值范围的值。

例子:

我有一个矢量图

A = [-2 1 3 -1 5 6]

并且想根据向量 A 的值来表示 3 个组的向量。让这些组为

  • 第 1 组:A <1 中的值
  • 第 2 组:A <5 和 >=1 中的值
  • 第 3 组:A 中的值 >=5

结果向量将是

X = [1 2 2 1 3 3]

我该怎么做呢?我确定答案就在那里,但我缺少正确的搜索词。

4

2 回答 2

1

这是一个简单的逻辑索引案例:

A = [-2 1 3 -1 5 6]

X = 2*(A<5) + 3*(A>=5);
X(A<1)=1;

或假设您的意思是第 2 组:<5 AND >=1

X = (A<1) + 2*(A>=1 & A<5) + 3*(A>=5);
于 2015-07-27T16:55:00.640 回答
0

虽然我个人更喜欢逻辑索引,但您也可以使用histcounts. 对于这种特定情况,这可能有点矫枉过正,但它允许您利用内置的分箱算法:

A = [-2 1 3 -1 5 6];
edges = [-inf 1 5 inf];

[~, ~, binidx] = histcounts(A, edges);

返回:

binidx =

     1     2     2     1     3     3

要设置您的 bin 边缘,您可以edges根据文档使用输入:

Bin 边缘,指定为向量。edge(1) 是第一个 bin 的左边缘,edges(end) 是最后一个 bin 的右边缘。

如果您不需要利用任何分箱算法,您也可以使用discretize

A = [-2 1 3 -1 5 6];
edges = [-inf 1 5 inf];
binidx2 = discretize(A, edges);

返回与上述相同。

于 2015-07-27T17:13:46.360 回答