尝试将数组中的元素与matlab中另一个数组的每个元素进行比较

时间:2014-06-05 15:23:37

标签: arrays matlab element vectorization

我正在使用Matlab,而我正试图想出一个矢量化解决方案,用于将一个数组的元素与另一个数组的每个元素进行比较。具体来说,我想找出差异,看看这个差异是否低于某个阈值。

Ex:a = [1 5 10 15],b = [12 13 14 15],阈值= 6

所以满足阈值的元素将是10和15,因为每个值都在b中任何值的6之内,而1和5则不是。目前我有一个for循环遍历a的元素并从b中减去一个等效大小的矩阵(对于5,它将是a = [5 5 5 5])。这显然需要很长时间,所以我试图找到一个矢量化解决方案。另外,我有数据的当前格式实际上是每个单元格元素大小为[1 2]的单元格,我一直在使用cellfun函数来执行我的减法。我不确定这是否会使每个[1 2]块的解与第二个单元的[1 2]块复杂化。矢量化解决方案响应很好,不需要进行阈值分析。我刚刚添加了它以获得更多背景。

提前致谢,

陈文伟

1 个答案:

答案 0 :(得分:1)

使用bsxfun

>> ind = any(abs(bsxfun(@minus,a(:).',b(:)))<threshold)
ind =
     0     0     1     1

>> a(ind)
ans =
    10    15