使用C语言 写一个卷积
时间: 2023-07-20 08:26:52 浏览: 95
好的,下面是使用C语言写一个简单的卷积的代码:
```c
#include <stdio.h>
#define ROW 3 // 输入矩阵的行数
#define COL 3 // 输入矩阵的列数
#define KERNEL_SIZE 3 // 卷积核的大小
int main()
{
int input[ROW][COL] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; // 输入矩阵
int kernel[KERNEL_SIZE][KERNEL_SIZE] = {{1, 0, 1}, {0, 1, 0}, {1, 0, 1}}; // 卷积核
int output[ROW-KERNEL_SIZE+1][COL-KERNEL_SIZE+1]; // 输出矩阵
// 对于每一个输出位置
for (int r = 0; r < ROW-KERNEL_SIZE+1; r++) {
for (int c = 0; c < COL-KERNEL_SIZE+1; c++) {
int sum = 0;
// 对于每一个卷积核元素
for (int kr = 0; kr < KERNEL_SIZE; kr++) {
for (int kc = 0; kc < KERNEL_SIZE; kc++) {
sum += input[r+kr][c+kc] * kernel[kr][kc]; // 逐个相乘并累加
}
}
output[r][c] = sum; // 将累加结果赋值给输出矩阵对应位置
}
}
// 打印输出矩阵
for (int r = 0; r < ROW-KERNEL_SIZE+1; r++) {
for (int c = 0; c < COL-KERNEL_SIZE+1; c++) {
printf("%d ", output[r][c]);
}
printf("\n");
}
return 0;
}
```
这段代码实现了一个 $3 \times 3$ 的输入矩阵和一个 $3 \times 3$ 的卷积核的卷积,并打印出了输出矩阵。你可以根据需要修改输入矩阵、卷积核和输出矩阵的大小。
阅读全文