您好,欢迎访问三七文档
经过vc6.0++程序检验的褶积代码《信号分析与处理基础》和《数字信号与系统》里都要用到褶积,这也即是数学上的卷积,代码其实很简单,主要是哪个算法一定要记在心里。由褶积公式知道:)()()()()(mnhmxnhnxny从公式出发,就可以编程相应的褶积代码,这当然与快速褶积不一样,快速褶积要用到DFT,顾名思义快速褶积计算很快;而一般的褶积计算量就比较大了,但是计算机计算,不要担心。)(nx与)(mh褶积就是后面的求和,可见脚标是相互联系的,这就好办了,子程序如下:褶积的英语是:convolution,程序里就用con表示褶积。不怎么怎么回事文件夹名、文件名无法用con表示,就只有用conv表示相应的褶积文件。//传入数组1,2以及存储数组3;1,2的长度voidcon(doublea[],doubleb[],doublec[],intM,intL){inti,j,N;N=M+L-1;for(i=0;iN;i++){doubletp=0.0;for(j=0;jM;j++){if((i-j)=0&&(i-j)L)tp+=a[j]*b[i-j];}c[i]=tp;tp=0.0;}}检验程序与结果:#includestdio.h#includeconv.cppvoidmain(){inti;doublex[4]={1,2,3,4},h[3]={2,3,2};doubley[6]={0};con(x,h,y,4,3);for(i=0;i6;i++)printf(%f\n,y[i]);}程序分为主程序与子程序,在主程序里面调用子程序,只需要在头文件里包含相应的文件既可以,如:#includeconv.cpp编译时,vc++就自动编译,这样也使程序简洁,干净了!与直接计算结果一样,验证正确!
本文标题:褶积的C语言代码
链接地址:https://www.777doc.com/doc-4180838 .html