我想创建一个包含基于另一个向量中的值范围的值的向量。
示例:
我有一个载体
A = [-2 1 3 -1 5 6]
并且希望基于向量A的值来说出3组的向量。让组成为
结果向量将是
X = [1 2 2 1 3 3]
我该怎么做呢?我确定答案已经存在,但我错过了正确的搜索字词。
答案 0 :(得分:1)
这是逻辑索引的一个简单例子:
A = [-2 1 3 -1 5 6]
X = 2*(A<5) + 3*(A>=5);
X(A<1)=1;
或假设您的意思是第2组:&lt; 5 AND&gt; = 1
X = (A<1) + 2*(A>=1 & A<5) + 3*(A>=5);
答案 1 :(得分: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)是the的左边缘 第一个bin,edge(end)是最后一个bin的右边缘。
如果您不需要利用任何分箱算法,也可以使用discretize:
A = [-2 1 3 -1 5 6];
edges = [-inf 1 5 inf];
binidx2 = discretize(A, edges);
返回与上面相同的内容。