【问题标题】:Trying to compare elements of on array with every element of another array in matlab尝试将数组的元素与matlab中另一个数组的每个元素进行比较
【发布时间】:2014-06-05 15:23:37
【问题描述】:

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

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

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

提前致谢,

陈曼伟

【问题讨论】:

    标签: arrays matlab element vectorization


    【解决方案1】:

    使用bsxfun:

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

    【讨论】:

    • bsxfun 太有趣了!
    • @Shai 是的,太棒了!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-30
    • 1970-01-01
    相关资源
    最近更新 更多