如何从八度数组中读取一些固定数量的元素?

How to read some fixed number of elements from an array in octave?

我有一个包含 102300000 个元素的数组。我想从这个数组的元素中创建两个数组,如下所示:

  1. 一个数组应包含原始数组的以下索引中的元素: index = 1-20,41-60, 81-100, 121-140 and so on
  2. 另一个应具有原始数组的以下索引中的元素: index = 21-40, 61-80, 101-120, 141-160 and so on

有人知道如何实现吗?

实现此目的的一种快速矢量化方法是认识到顶部数组所需的零索引是模数为 20 的模数与模数为 40 相同的数组,而另一个数组是其中的一个两个模数不同。因此,你可以利用这个事实来执行 'logical indexing'.

因为八度不是从零开始的索引,所以你必须从一开始的索引中减去一个。

例如

Indices = 1:200;
M = Indices * 10;   % our example matrix; multiplied by 10 here
                    % simply to differentiate it visually from the Indices
M1 = M( mod( Indices - 1, 20 ) == mod( Indices - 1, 40 ) );
M2 = M( mod( Indices - 1, 20 ) != mod( Indices - 1, 40 ) );