简单卷积程序

来源:互联网 发布:java数组倒置 编辑:程序博客网 时间:2024/06/13 21:38
#include<iostream>using namespace std;#define numberOfElement(array) sizeof(array)/sizeof(array[0])/*设输入数据的采样点是m个 响应函数的采样点是n个 卷积后输出的数据点个数是m+n-1*/int conv(int *arr,int *acc,int firt,int sec){    int lastSum = firt+sec-1;    cout<<"lastSum is "<<lastSum<<endl;    int *recordSum = new int[lastSum];    for(int i=0;i<lastSum;i++)        recordSum[i] = 0;    for(int i=0;i<lastSum;i++)    {        /*需要判断对相应输出数据产生影响的输入数据的范围*/        /*这个范围当然要收到响应函数的影响*/        /*sec是相应的响应函数采样点的数量 这决定了每个采样点可以影响的输入数据的范围*/        /*max(i-(sec-1),0)是可以影响的输入数据的起始点*/        for(int j = max(i-(sec-1),0);j<=min(firt-1,i);j++)        {            recordSum[i] += arr[j]*acc[i-j];        }    }        cout<<"the result of convolution is"<<endl;    for(int i=0;i<lastSum;i++)    {        cout<<recordSum[i]<<" ";    }    cout<<endl;    return 1;}    int main(){    /*experiment*/    int first[] = {4,3,2,1};    int sec[] = {3,2,1};    conv(first,sec,numberOfElement(first),numberOfElement(sec));    system("pause");    return 1;}


原创粉丝点击