卷积函数的C语言实现

void Convert(double BMWL,double NORMAL,double *BMwindowVct,float *RR,int * rR,int lenz,double *RRproc)
{
 double *X=NULL;
 double *Y=NULL;
 if (NULL==X)
 {
  X=new double[BMWL]; 
 }
 if (NULL==Y)
 {
  Y=new double[NORMAL];
 }

 for(int i=0;i<BMWL;i++)
 {
  X[i]=BMwindowVct[i];
 }

 for(int i=0;i<NORMAL;i++)
 {
  Y[i]=RR[(int)rR[i]];
 }
 double *zptr=NULL;
 double s;
 double *xp=NULL;
 double *yp=NULL;
 int n,n_lo,n_hi;

 double *Z=NULL;
 if (NULL==Z)
 {
  Z=new double[lenz];
 }
 zptr=Z;
 for (int i=0;i<lenz;i++)
 {
  s=0.0;
  n_lo=0>(i-NORMAL+1)?0:i-NORMAL+1;
  n_hi=BMWL-1<i?BMWL-1:i;
  xp=X+n_lo;
  yp=Y+i-n_lo;
  for (n=n_lo;n<=n_hi;n++)
  {
   s+=*xp * *yp;
   xp++;
   yp--;
  }
  *zptr=s;
  zptr++;
 }
 for(int i=0;i<lenz;i++)
 {
  RRproc[i]=Z[i];
 }

  delete [] X;
  X=NULL;
  delete [] Y;
  Y=NULL;
  delete [] Z;
  Z=NULL;

 int m=0;
 for(int l=(ceil((double)BMWL/2-2));l<(ceil((double)BMWL/2)+NORMAL-2);l++)
 {
  RRproc[m]=RRproc[l];
  m++;
 }

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值