C++实现卷积
约 14 个字 30 行代码
学习到卷积,于是用c++实现了一下
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <vector>
#include <queue>
#include <map>
#include <algorithm>
using namespace std;
void convolve(int a[],int b[],int m,int n,int*p){
int i,j;
int k=m+n-1;//卷积后数组长度
/**卷积计算**/
for(i=0; i<k; i++,p++)
{
for(j=max(0,i+1-n); j<=min(i,m-1); j++)
*p+=a[j]*b[i-j];
}
}
int main()
{
int m=3,n=3;
int a[3]= {1,2,3},b[3]= {4,5,6};
int c[9] = {0};
int *p = c;
convolve(a,b,3,3,p);
for(int i = 0;i<5;i++) cout<<c[i]<<" ";
cout<<endl;
}