【问题标题】:What is the fastest way in Matlab to build a submatrix picking elements from another one?Matlab中从另一个子矩阵中挑选元素的最快方法是什么?
【发布时间】:2012-06-08 08:10:14
【问题描述】:

考虑有一个矩阵。从这个矩阵中,我从每一行中选择相同数量的元素。假设矩阵是nxn,我从每一行中取出m 元素(m<n)。

我将用这些选定的元素构建一个mxm 矩阵。在每一行中,我都放置了取自原始矩阵的元素(当然是相同的行索引)。

实现这一目标的最佳方法是什么?

谢谢

【问题讨论】:

  • 我会说如果你要传递所有可用的行,那么你会得到一个mxn 矩阵。

标签: matlab


【解决方案1】:

此处说明了实现此目的的一种方法。定义一个数组a 来玩......

a = randi(6,6);
b = a([1 3 5],[2 4 6])

这演示了使用索引向量将行和列从一个矩阵选择到另一个矩阵。这取决于能否指定要用作索引的向量。你也可以写:

c = a(1:2:end,2:2:end)

现在,如果您告诉我们您所说的“最佳方式”是什么意思,我们也许也能告诉您!

编辑

所以我再次阅读了这个问题,似乎“最好”是指“最快”。我从不关心测量这种操作的速度,我感兴趣地等待潜伏在这里的一位真正的 Matlab 专家提供比这更聪明的答案。

当然,最快的方法是根本不构建子矩阵,而是对原始矩阵的元素进行操作。我不知道你的算法是否可以适应避免构建子矩阵。

【讨论】:

  • +1 表示不构建包含相同信息的矩阵 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-02
  • 1970-01-01
  • 2015-10-20
  • 2016-02-06
  • 2020-09-02
相关资源
最近更新 更多