MATLAB equivalent in c++

MATLAB equivalent in c++

本文关键字:c++ in equivalent MATLAB      更新时间:2023-10-16

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

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

在c++中有等价的吗?或者How do i do this in 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++中实现相同的

这只在一个相当晦涩的类std::valarray中可用。您需要一个步幅为{2,2}的std::gslice(广义切片)来访问std::valarray

在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属性来修改访问的元素。

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