《维卷积运算C语言实现过程.doc》由会员分享,可在线阅读,更多相关《维卷积运算C语言实现过程.doc(2页珍藏版)》请在三一文库上搜索。
1、二维卷积运算之 C 语言实现若x为N1*M1的二维信号,y为N2*M2的二维信号,则卷积为(N1+N2-1)*(M1+M2-1)的信号z(i,j)= E E 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 xN1M1,int yN2M2,int zN1+N2-1M1+M2-1)int i,j;int n,m;for(i=0;iN1+N2-1;i+)for(j=0;jM1+M2-1;j+)int temp=0;f
2、or(m=0;mN1;m+)for(n=0;n=0&(i-m)=0&(j-n)M2)temp+=xmn*yi-mj-n;zij=temp;void output(int array,int n,int m)int i;for(i=0;in;i+)if(i%m=0)printf(nn);printf(%4d,arrayi);void main()int xN1M1=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 yN2M2=1,2,3,2,3,1;int zN1+N2-1M1+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);