MATLAB在c ++中的等价物

时间:2014-08-20 07:57:58

标签: c++ matlab

在MATLAB中,为了访问矩阵的奇数或偶数行和列,我们使用

A = M(1:2:end,1:2:end);

在C ++中是否有相同的功能?或者我如何在C ++中执行此操作。

基本上我想做的是在matlab中我有

A(1:2:end,1:2:end) = B(1:2:end,:);
A(2:2:end,2:2:end) = B(2:2:end,:);

我想在C ++中实现相同的功能

3 个答案:

答案 0 :(得分:2)

仅在相当模糊的类std::valarray中可用。您需要std::gslice(广义切片)并使用步幅{2,2}才能访问std::valarray

答案 1 :(得分:0)

for(int i= 0; i < rows/2; i++)
  for(int j= 0; j < columns/2; j++)
    A[i][j] = M[i*2][j*2];

答案 2 :(得分:0)

在C ++中,for循环构造如下

for (initial state; condition for termination; increment)

因此,如果您正在寻找奇数元素,您可以:

for (int i = 0; i < size; i += 2),

如果你正在寻找偶数元素:

for (int i = 1; i < size; i += 2).

size取决于您是否循环遍历行或列。考虑到因为C ++数组从索引0开始,所以奇数元素将对应于偶数索引,而偶数元素将对应于奇数索引。

现在,答案是:如果要获取矩阵的元素,在C ++中必须使用for循环遍历矩阵。您可以通过修改for循环的 increment 属性来修改您访问的元素。