如何循环通过矩阵块?

时间:2009-10-08 08:08:24

标签: c matrix

我有一些矩阵,我想循环通过块,矩阵可以有许多不同的大小,但我可以知道大小,有没有办法快速循环通过块?

即:要快速输出块的索引,假设我应该有一个4 * 4的矩阵:

Block1:(0,0),(0,1)(1,0)(1,1)
方框2:(0,2),(0,3)(1,2)(1,3)
方块3:(2,0),(2,1)(3,0)(3,1)
方框4:(2,2),(2,3)(3,2)(3,3)
索引是(row,col)。

对于块,我指的是大小为sqrt(matrixSize)* sqrt(matrixSize)的子矩阵,其中matrix是matrixSize * matrixSize的矩阵。 例如,4 * 4的矩阵有4个2 * 2的块,9 * 9有9个3 * 3的块......

我在C中工作,但我认为伪代码也很有用,我只需要索引上的循环。

1 个答案:

答案 0 :(得分:0)

我设法做到了,它用c ...编码 变量'matrix_size'包含矩阵的行数(或列数) 变量'block'包含矩阵的一个块的预先计算的大小,即:matrix_size的sqrt。


for(int i = 0; i< matrix_size; i++)
{
  fprintf(stdout, "Block %u: ", i);
  for(int k= ((i/block)*block) ; k < (((i/block)*block) + block) ;k++)
  {
    for(int j = ((i%block)*block) ; j< (((i%block)*block) + block); j++)
    {
      fprintf(stdout,"(%u,%u)",k,j);
    }
  }
  fprintf(stdout, "\n");

}