[英]Matlab : How to make label output from interval data?
所以我有這個數據:
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);
如果間隔始終具有相同的長度(如您的情況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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.