c语言卷积算法

卷积计算的4个步骤:反折,平移,相乘,相加。将两组数,进行卷积后,变成第三组数。

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include"stdio.h"
int  table_a[3]={4,2,3};//原数组A-给定
int  table_b[3]={2,5,1};//原数组B-给定
//---------------------------------------------------------------------------
#pragma argsused
void My_Convolution(int *Tab_A,int *Tab_B)
{
	int temp = 0;
	int i = 0;
	int j = 0;
	int k = 0;
	int Length_A,Length_B;//数组A和数组B的长度
	int ALL_Length;//卷积后的总长度
    unsigned int Temp_A[10000]={0};//此空间要足够大,要满足卷积后的总长度
    unsigned int Conv_out[10000]={0};//用于存放输出结果的数组

	Length_A = sizeof(table_a)/sizeof(unsigned int);//求数组A的长度
	Length_B = sizeof(table_b)/sizeof(unsigned int);//求数组B的长度
	printf("数组A的长度: %d\n",Length_A);//打印A的长度
	printf("数在B的长度: %d\n",Length_B);//打印B的长度
	ALL_Length = Length_A + Length_B -1;//卷积后的总长度
	printf("卷积结果长度: %d\n",ALL_Length);//打印卷积结果长度
	for(i = 0; i < Length_A; i++)//将输入参数Tab_A数组后面补0
	{
		Temp_A[i] += Tab_A[i];//处理后放到临时数组Temp_A中
	}
	printf("The convolution result is: \n");//输出提示,"卷积结果如下:"
	//------------卷积核心算法部分---------------
	for(i = 0; i < ALL_Length; i ++)
	{
		for(k = i,j = 0; k >= 0; k --,j ++)
		{
			temp += Temp_A[k]*Tab_B[j];	
		}
		Conv_out[i]=temp;
		temp=0;
		printf("%d\n",Conv_out[i]);
	}
    //------------------------------------------
}
int main(int argc, char* argv[])
{
    My_Convolution(table_a,table_b);
    getchar();
    return 0;
}
//---------------------------------------------------------------------------

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值