Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab:如何从区间数据中输出标签?_Matlab_Intervals_Labels - Fatal编程技术网

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

Matlab:如何从区间数据中输出标签?,matlab,intervals,labels,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 输出基于间隔您可以通过多种方式进行求解。例如,使用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= 
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

输出基于间隔

您可以通过多种方式进行求解。例如,使用
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);
A=[2 4 8 9 4 6 1 3];
B=[14;
5 8;
9 12];

res=arrayfun(@(x)find((x>=B(:,1))&(x如果间隔始终具有相同的长度,如案例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
%示例条目
A=[2 3 4 8 9 4 6 1 3];
B=[14;57;9 12];
Arep=A(:,个(大小(B,2),1));%复制数组(或者使用repmat)

Alog=Arep>=B(1,:)&ArepHow是从A和B计算出来的输出?例如,对于第一个A数据,其值为2,我们必须搜索所有存在的区间[1 4]第二[5 8]第三[9 12],因为2在第一个区间,所以输出为1(表示第一个区间)到目前为止,您尝试了什么?这个问题没有那么难…使用@MasBiru的错误对我有效,可能您没有运行完整的示例;可能是您定义了A或B作为它们的转置