褶积的C语言代码
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。
经过vc6.0++程序检验的褶积代码 《信号分析与处理基础》和《数字信号与系统》里都要用到褶积,这也即是数学上的卷积,代码其实很简单,主要是哪个算法一定要记在心里。 由褶积公式知道:y(n)x(n)h(n)x(m)h(nm) 从公式出发,就可以编程相应的褶积代码,这当然与快速褶积不一样,快速褶积要用到DFT,顾名思义快速褶积计算很快;而一般的褶积计算量就比较大了,但是计算机计算,不要担心。 x(n)与h(m)褶积就是后面的求和,可见脚标是相互联系的,这就好办了,子程序如下:褶积的英语是:convolution,程序里就用con表示褶积。不怎么怎么回事文件夹名、文件名无法用con表示,就只有用conv表示相应的褶积文件。 //传入数组1,2以及存储数组3;1,2的长度 void con(double a[],double b[],double c[],int M,int L) { int i,j,N; N=M+L-1; for(i=0;i { double tp=0.0; for(j=0;j { if((i-j)>=0&&(i-j) tp+=a[j]*b[i-j]; } c[i]=tp; tp=0.0; } }
检验程序与结果: #include"stdio.h" #include"conv.cpp" void main() {
int i;
double x[4]={1,2,3,4},h[3]={2,3,2}; double y[6]={0}; con(x,h,y,4,3); for(i=0;i<6;i++)
printf("%f\n",y[i]); }
程序分为主程序与子程序,在主程序里面调用子程序,只需要在头文件里包含相应的文件既可以,如:#include"conv.cpp"
编译时,vc++就自动编译,这样也使程序简洁,干净了!
与直接计算结果一样,验证正确!
本文来源:https://www.wddqw.com/doc/a9213d2a2f60ddccda38a07c.html