在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 ++中实现相同的功能
答案 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 属性来修改您访问的元素。