我想创建一个向量,其中包含基于另一个向量中的值范围的值。
例子:
我有一个矢量图
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]
我该怎么做呢?我确定答案就在那里,但我缺少正确的搜索词。
我想创建一个向量,其中包含基于另一个向量中的值范围的值。
例子:
我有一个矢量图
A = [-2 1 3 -1 5 6]
并且想根据向量 A 的值来表示 3 个组的向量。让这些组为
结果向量将是
X = [1 2 2 1 3 3]
我该怎么做呢?我确定答案就在那里,但我缺少正确的搜索词。
这是一个简单的逻辑索引案例:
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);
虽然我个人更喜欢逻辑索引,但您也可以使用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);
返回与上述相同。