在使用matlab指定上限/下限后从数组中提取数据

时间:2013-10-30 10:06:54

标签: arrays matlab limit extract

是否有任何方法可以指定上限和下限并从数组中提取数据?

Matlab中是否有任何函数可以从阵列中提取属于指定限制的数据?

例如: 我制作了两个样本图,并提取了以下数据点

A=[1 2.2 4.3  5.3 12.0 34.1 43.3] %Time stamp values from the first plot
B=[1.4 7.6 35.2] %Time stamp values from the second plot

我从图B中获取每个时间戳值,并希望添加+ 2.0和-2.0并将它们指定为上限/下限。 我想找出A的时间戳值是否属于任何上限/下限......

2 个答案:

答案 0 :(得分:2)

试试这个:

tol = 2;
result = bsxfun(@ge,A(:).',B(:)-tol) & bsxfun(@le,A(:).',B(:)+tol);

解释是:如果result(m,n)中的第n个点位于A中第m个点的+/- tol范围内,则B为1,并且否则为0。

如果您只是想知道A的每个点是否在B任何点的指定范围内,请使用

any(result)

使用您的示例数据:

>> A = [1 2.2 4.3 5.3 12.0 34.1 43.3];
>> B = [1.4 7.6 35.2];
>> result

result =

     1     1     0     0     0     0     0
     0     0     0     0     0     0     0
     0     0     0     0     0     1     0

>> any(result)

ans =

     1     1     0     0     0     1     0

答案 1 :(得分:0)

您需要的是ismemberf File Exchange submission

它基本上可以让您检查容差范围内是否有匹配值。

示例:

以下是ismemberf的使用方法,假设您已经下载并且它在您的路径上:

A = [1 2.2 4.3 5.3 12.0 34.1 43.3] 
B = [1.4 7.6 35.2]
[lia, locb] = ismemberf(A,B,'tol',2)

会给:

lia =

     1     1     0     0     0     1     0


locb =

     1     1     0     0     0     3     0