首页 > 解决方案 > 如何在 C 中使用双指针矩阵制作卷积函数?

问题描述

我需要在 C 中创建一个卷积函数,但我有点迷路了。基本上我需要类似的东西:

在此处输入图像描述

我的函数需要为 3x3 甚至 1000x1000 的方阵做好准备。这是我尝试过的:

int calcConv(int **matrix, int ** filter,int i, int j){
  int calc=0;

  for(int ii=i ; ii<i+3 ; ii++){             //Fixed posible Infinite Loop
    for(int jj=j ; jj<j+3 ; jj++){
      calc+= matrix[ii][jj] * filter[ii][jj];
    }
  }

  return calc;
}


int ** convolucion(int **matrix, int **filter, int size){
  int i,j;

  int ** convMatrix = (int**)malloc( size * sizeof(int*));

  for(i=0;i<size;i++){
    convMatrix[i]= (int*)malloc( size * sizeof(int));
  }

  for(i=0;i<size;i++){
    for(j=0;j<size;j++){
      convMatrix[i][j]=matrix[i][j];
    }
  }

  for(i=1;i<size-1;i++){
    for(j=0;j<size-2;j++){
      convMatrix[i][j+1]= calcConv(matriz,filter,i-1,j);
    }
  }

  return convMatrix;
}

非常感谢任何帮助或建议!

标签: cfunctionconvolution

解决方案


推荐阅读