褶积的C语言代码

时间:2022-05-19 22:27:21 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。
经过vc6.0++程序检验的褶积代码

《信号分析与处理基础》和《数字信号与系统》里都要用到褶积,这也即是数学上的卷积,代码其实很简单,主要是哪个算法一定要记在心里。

由褶积公式知道

y(n)x(n)h(n)x(m)h(nm)



从公式出发,就可以编程相应的褶积代码,这当然与快速褶积一样,快速褶积要用到DFT,顾名思义快速褶积计算很快;而一般的褶积计算量就比较大了,但是计算机计算,不要担心。

x(n)h(m)褶积就是后面的求和,可见脚标是相互联系的,这就好办了,子程序如下:褶积的英语是:convolution,程序里就用con表示褶积。不怎么怎么回事文件夹名、文件名无法用con表示,就只有用conv表示相应的褶积文件。

//传入数组1,2以及存储数组31,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