簡體   English   中英

Matlab:如何使間隔數據輸出標簽?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM