用C语言写两个数组的卷积
时间: 2023-05-29 07:01:11 浏览: 271
以下是使用C语言编写的两个数组的卷积的示例代码:
```c
#include <stdio.h>
void convolution(int X[], int Y[], int Z[], int m, int n) {
int i, j, k;
for (i = 0; i <= (m + n - 2); i++) {
Z[i] = 0;
for (j = 0; j <= i; j++) {
k = i - j;
if ((j >= 0) && (j < m) && (k >= 0) && (k < n)) {
Z[i] += (X[j] * Y[k]);
}
}
}
}
int main() {
int X[] = {1, 2, 3, 4, 5};
int Y[] = {1, 2, 3};
int Z[7];
convolution(X, Y, Z, 5, 3);
printf("The result of convolution: ");
for (int i = 0; i < 7; i++) {
printf("%d ", Z[i]);
}
printf("\n");
return 0;
}
```
其中,函数convolution接受两个数组X和Y,以及它们的长度m和n,并将它们的卷积存储在数组Z中。该函数使用两个for循环来计算卷积,首先遍历Z中的每个位置,然后计算X和Y中对应元素的乘积之和。在计算乘积之前,需要检查X和Y的索引是否有效。
在上面的示例中,我们使用了两个数组X和Y,长度分别为5和3,它们的卷积存储在Z中。在将结果打印到控制台上时,我们遍历了Z中的所有元素并将它们打印到控制台上。
阅读全文