行主要到行列索引

时间:2014-07-04 19:29:56

标签: c++ arrays matlab matrix-indexing

好吧,这更像是一个好奇的问题,因为代码有效,但语法让我困惑。基本上我在C ++和Matlab中比较了Row-major到row-column索引的转换。在C ++中,一切听起来都不错,您可以使用以下公式来回传递:

  i = row*N_COLS+col; //<-- from row-col to row-major
  row = i/N_COLS;     //<-- getting back row
  col = i%N_COLS;     //<-- getting back column

现在要在Matlab中完成相同的事情,因为起始索引的变化是1而不是0,我挣扎了一下并想出了以下公式:

  i = (row-1)*N_COLS+col;  //<-- from row-col to row-major
  row = ceil(i/N_COLS);    //<-- instead of the flooring of C++
  col = mod(i-1,N_COLS)+1; //<-- say What??

但是为了得到正确的结果,我必须添加和减去1似乎有点奇怪。有更优雅的方式吗?

0 个答案:

没有答案