【发布时间】:2017-10-08 22:09:09
【问题描述】:
假设我们有 nxn 二进制矩阵M。在 MATLAB 中,我想找到对应于 1 的点的“平均”索引。
为了说明,以下示例显示。红色圆圈表示单元格值为 1,所有其他单元格值为 0。绿色 x 是我要返回的索引。最合适的蓝线进一步说明了我的观点。
我正在专门寻找有效的代码来执行此操作。任何具有一些简单数学技能的人都可以计算出这个“平均”指数,但由于 MATLAB 基于循环/迭代的低效率,我需要编写快速代码。
【问题讨论】:
-
但是由于 MATLAB 的低效率 什么低效率? Matlab 可以很好地处理它。 Matlab 非常擅长处理矩阵。
-
循环在 MATLAB 中非常昂贵。特别是嵌套循环。在我的具体情况下,我正在实现的已经在一个嵌套循环中,因此任何额外的循环都是非常不可取的。
-
在 Matlab 中查看Vectorization。
-
我了解在 Matlab 中提高性能的各种方法。这超出了这个问题的范围,最终无关紧要。但是,为了简单起见,假设上述嵌套循环是不可避免的,因此内部代码需要高效。
-
高效是什么意思?此外,在 Matlab 中,如果这是您要查找的内容,您可以调用 C 代码。