Matlab:如何从区间数据中输出标签?

时间:2017-05-22 06:45:08

标签: matlab intervals labels

所以我有这些数据:

 A= 
2
4
8
9
4
6
1
3

和3区间

B=
1 4
5 8
9 12

如何制作这样的输出

Output=
1
1
2
3
1
2
1
1

输出基于间隔

2 个答案:

答案 0 :(得分:0)

你可以通过多种方式解决它。例如,使用arrayfun

 A = [2 4 8 9 4 6 1 3].';
 B = [1 4;
     5 8;
     9 12];
 res = arrayfun(@(x) find((x >= B(:,1)) & (x <= B(:,2))),A);

答案 1 :(得分:0)

如果间隔始终具有相同的长度(如案例4中所示),则可以按如下方式解决:

Output=ceil(A/4);

如果不是这种情况,并且如果并非所有数字都必须介于任何间隔之间,则可以按如下方式计算。如果数字不在任何间隔内,则输出零。

% example entry
A=[2 3 4 8 9 4 6 1 3]';
B=[1 4;5 7;9 12]';

Arep=A(:,ones(size(B,2),1)); % replicate array (alternatively use repmat)
Alog=Arep>=B(1,:)&Arep<=B(2,:); % conditional statements, make logical array
Output=Alog*(1:size(B,2))'; % matrix product with natural array to obtain indices