Matlab从2D矩阵中高效快速采样

时间:2014-02-28 01:29:15

标签: matlab sampling

使用MatLab,我有一个2D矩阵,我想从中采样。这个位置每次都是已知和固定的。

嵌套的For循环很慢。目前我正在使用逻辑索引,例如

cords = [ 1 0 1; 0 0 0 ]; cords = logical(cords)
data = aMatrix(cords);

我的主要问题是:有比这更快的方法吗?

我通过使用逻辑索引进行的另一个查询,每次都以相同的顺序对数据进行采样,这很重要。

2 个答案:

答案 0 :(得分:0)

逻辑索引通常比线性索引或下标更快,可能是因为通常调用find。如果您有逻辑矩阵,请使用它。如果您有线性索引,请使用它们。不要试图转换只是为了加快实际的索引步骤。

从逻辑索引获得的输出data的顺序与find(cords)返回的索引的顺序相同(线性索引)。

答案 1 :(得分:0)

虽然逻辑索引很简单快速,但如果只提取少量已知点,那么仍然可以考虑使用线性索引来实现简单性:

data = aMatrix([1 5]);

对于不太重要的案件,sub2ind会有所帮助。