在Matlab中构建子矩阵拾取元素的最快方法是什么?

时间:2012-06-08 08:10:14

标签: matlab

考虑使用矩阵。从这个矩阵中,我从每一行中选择相同数量的元素。我们假设矩阵是nxn,并且每行我都会m个元素(m<n)。

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

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

三江源

1 个答案:

答案 0 :(得分:4)

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

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

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

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

现在,如果你用'最好的方式'告诉我们你的意思,我们也可以告诉你!

修改

所以我再次阅读这个问题,似乎'最好'你的意思是'最快'。我从来没有关注过这种操作的速度,我饶有兴趣地等待着潜伏在这里的一位真正的Matlab专家提供了比这更聪明的答案。

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