【问题标题】:MATLAB: Finding "Average" Index In Square Binary MatrixMATLAB:在平方二进制矩阵中查找“平均”索引
【发布时间】:2017-10-08 22:09:09
【问题描述】:

假设我们有 nxn 二进制矩阵M。在 MATLAB 中,我想找到对应于 1 的点的“平均”索引。

为了说明,以下示例显示。红色圆圈表示单元格值为 1,所有其他单元格值为 0。绿色 x 是我要返回的索引。最合适的蓝线进一步说明了我的观点。

我正在专门寻找有效的代码来执行此操作。任何具有一些简单数学技能的人都可以计算出这个“平均”指数,但由于 MATLAB 基于循环/迭代的低效率,我需要编写快速代码。

【问题讨论】:

  • 但是由于 MATLAB 的低效率 什么低效率? Matlab 可以很好地处理它。 Matlab 非常擅长处理矩阵。
  • 循环在 MATLAB 中非常昂贵。特别是嵌套循环。在我的具体情况下,我正在实现的已经在一个嵌套循环中,因此任何额外的循环都是非常不可取的。
  • 在 Matlab 中查看Vectorization
  • 我了解在 Matlab 中提高性能的各种方法。这超出了这个问题的范围,最终无关紧要。但是,为了简单起见,假设上述嵌套循环是不可避免的,因此内部代码需要高效。
  • 高效是什么意思?此外,在 Matlab 中,如果这是您要查找的内容,您可以调用 C 代码。

标签: matlab matrix average


【解决方案1】:

这个怎么样:

Rand_matrix=randi([0 1],3,3); %random binary matrix
[rows,col]=find(Rand_matrix);
row_mean=mean(rows);
col_mean=mean(col);
midpoint=[row_mean,col_mean]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    • 2013-09-13
    • 2013-04-13
    • 1970-01-01
    • 2014-03-16
    相关资源
    最近更新 更多