我有一些矩阵,我想循环通过块,矩阵可以有许多不同的大小,但我可以知道大小,有没有办法快速循环通过块?
即:要快速输出块的索引,假设我应该有一个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中工作,但我认为伪代码也很有用,我只需要索引上的循环。
答案 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");
}