关于数字信号处理课程设计 线性卷积在DSP芯片上的实现

来源:百度知道 编辑:UC知道 时间:2024/06/07 11:27:29
最近要做一个课程设计,是关于线性卷积在DSP芯片上的实现,我在学校图书馆找遍了关于数字信号课程设计的书籍,就是没有这个关于线性卷积的课程设计,请各位大虾帮帮忙,谢谢了,很焦急的等待中

#include <math.h>
#include <stdio.h>

#define Nx a //序列x[k]的长度
#define Nh b //序列h[k]的长度
#define Length Nx+Nh-1 //卷积或相关结果序列的长度

int x[Nx]={};
int h[Nh]={};
int y[Length];

void convolution(int*, int*, int*);

void main()
{
int k;
//调用卷积程序
convolution(x, h, y);
for(k=0;k<=Length-1;k++)
fprintf(stdout,"%i ",y[k]); // 打印卷积计算结果
fprintf(stdout,"\n ");

}

void convolution(int x[Nx] , int h[Nh], int y[Length] )
{
int i,k;
for (k=0;k<=Length-1; k++)
{
int temp=0;
for(i=0; i<Nx; i++)
{ if ((k-i)>=0 && (k-i) <=Nh-1)
temp=temp+x[i]*h[k-i];
}
y[k]=temp;
}
}

这就是卷积的C语言程序,将序列和序列的长度补充进去就好了

算法是很简单的哇,而且很多DSP会针对卷积,相关等操作来做指令优化的,优化的好写出来比C语言还少,跑得也快。