输入 • 二维矩阵 • 卷积核 • 计算次数N • 进行N次卷积计算 输出 结果矩阵 c语音代码
时间: 2023-05-31 19:04:59 浏览: 102
#include <stdio.h>
#define ROW 3
#define COL 3
void convolution(int matrix[][COL], int kernel[][COL], int n) {
int result[ROW][COL];
for(int k = 0; k < n; k++) {
for(int i = 0; i < ROW; i++) {
for(int j = 0; j < COL; j++) {
int sum = 0;
for(int x = -1; x <= 1; x++) {
for(int y = -1; y <= 1; y++) {
int r = i+x;
int c = j+y;
if(r >= 0 && r < ROW && c >= 0 && c < COL) {
sum += matrix[r][c] * kernel[x+1][y+1];
}
}
}
result[i][j] = sum;
}
}
for(int i = 0; i < ROW; i++) {
for(int j = 0; j < COL; j++) {
matrix[i][j] = result[i][j];
}
}
}
//输出结果矩阵
printf("Result Matrix:\n");
for(int i = 0; i < ROW; i++) {
for(int j = 0; j < COL; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
}
int main() {
int matrix[ROW][COL] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int kernel[ROW][COL] = {
{0, 1, 0},
{1, -4, 1},
{0, 1, 0}
};
int n = 3;
convolution(matrix, kernel, n);
return 0;
}
阅读全文