根据值的范围创建向量
Create vector based on range of values
我想创建一个包含基于另一个向量中值范围的值的向量。
示例:
我有一个向量
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]
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);
哪个returns:
binidx =
1 2 2 1 3 3
要设置 bin 边缘,您可以根据文档使用 edges
输入:
Bin edges, specified as a vector. edges(1) is the left edge of the
first bin, and edges(end) is the right edge of the last bin.
如果您不需要利用任何分箱算法,您也可以使用 discretize:
A = [-2 1 3 -1 5 6];
edges = [-inf 1 5 inf];
binidx2 = discretize(A, edges);
其中returns同上
我想创建一个包含基于另一个向量中值范围的值的向量。
示例:
我有一个向量
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]
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);
哪个returns:
binidx =
1 2 2 1 3 3
要设置 bin 边缘,您可以根据文档使用 edges
输入:
Bin edges, specified as a vector. edges(1) is the left edge of the first bin, and edges(end) is the right edge of the last bin.
如果您不需要利用任何分箱算法,您也可以使用 discretize:
A = [-2 1 3 -1 5 6];
edges = [-inf 1 5 inf];
binidx2 = discretize(A, edges);
其中returns同上