是否有任何方法可以指定上限和下限并从数组中提取数据?
或
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的时间戳值是否属于任何上限/下限......
答案 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