二维卷积运算之C语言实现
若x为N1*M1的二维信号,y为N2*M2的二维信号,则卷积为(N1+N2-1)*(M1+M2-1)的信号 z(i,j)=∑ ∑ x(m,n)y(i-m,j-n) ........m n
#define N1 8 信号1的行 #define M1 10 信号1的列 #define N2 2 信号2的行 #define M2 3 信号2的列
void juanji(int x[N1][M1],int y[N2][M2],int z[N1+N2-1][M1+M2-1]) { int i,j; int n,m;
for(i=0;i int temp=0; for(m=0;m if((i-m)>=0&&(i-m) void output(int array[],int n,int m) { int i; for(i=0;i if(i%m==0) printf(\printf(\} } void main() { int x[N1][M1]={{1,2,3,4,5,6,7,8,9,0} ,{2,3,4,5,6,7,8,9,0,1} ,{3,4,5,6,7,8,9,0,1,2} ,{4,5,6,7,8,9,0,1,2,3} ,{5,6,7,8,9,0,1,2,3,4} ,{6,7,8,9,0,1,2,3,4,5} ,{7,8,9,0,1,2,3,4,5,6} ,{8,9,0,1,2,3,4,5,6,7}}; int y[N2][M2]={{1,2,3} ,{2,3,1}}; int z[N1+N2-1][M1+M2-1]={0}; juanji(x,y,z); output(x,N1*M1,M1); output(y,N2*M2,M2); output(z,(N1+N2-1)*(M1+M2-1),M1+M2-1); }