将矩阵分割成小矩阵块的方法

2024-01-11

我有一个问题,想知道是否有人可以提供理想的解决方案。

基本上(小数据)但是,如果我有一个像这样的矩阵:

     0 1 0 0
     1 1 1 0
     0 0 0 0
     1 1 0 0

然后,我需要将该矩阵分割成与第二个矩阵大小相同的块,在本例中为 2x2:

0 1
1 1

我知道它与 offsetX/Y 值有关,并且这些值根据(小)矩阵的大小而变化,我只是不知道计算此类结果的计算方法。我将把 offsetX/Y 传递给一个函数(带有向量),这样我就可以计算特定块的总和。

有人有建议吗?

Thanks


import std.stdio : writeln;
void main(string[] args)
{
    int m=4, n=4;
    int[][] matrix = [[0, 1, 0, 0], [1, 1, 1, 0], [0, 0, 0, 0], [1, 1, 0, 0]];
    int mm=2, nn=2;
    int sum;
    for(int x=0; x<m; x+=mm)
      for(int y=0; y<n; y+=nn)
        sum += summation(matrix, x, y, mm, nn);
    writeln(sum);
}    
int summation(int[][] matrix, int offsetx, int offsety, int m, int n)
{
  int sum;
  for(int x=offsetx; x<offsetx+m; x++)
    for(int y=offsety; y<offsety+n; y++)
      sum += matrix[x][y];
  return sum;
}

除非你在寻找别的东西?在解释你的要求时,你的问题很模糊。

(这在 D 中编译,因为它是我唯一可以访问 atm 的东西,所以使用它作为转换为 C++ 的指南)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将矩阵分割成小矩阵块的方法 的相关文章

随机推荐