concorr.c

来自「计算如序列x[k]={1,2,3,4,5}与序列h[k]={2,-2,3,5}的」· C语言 代码 · 共 72 行

C
72
字号

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

#define Nx 5
#define Nh 3
#define Length  Nx+Nh-1


/*************计算两个序列的线性卷积*******************************/
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;
}
}
/*****************计算两个序列x[k]和h[k]卷积的子程序**************/
 void correlation(int x[Nx], int h[Nh],int r[Length] )
{
int i,k,n; 
int temp;
for (k=0;k<=Length-1;k++) 
   {
       n=(Nh-1)-k;
       temp=0;
       
       for(i=0; i<Nx; i++)
       { 
          if ((n+i)>=0 && (n+i)<=(Nh-1))
                temp=temp+x[i]*h[n+i];
            
        }
    r[k]=temp;
   }
}


 /*************************************************************/
 
//以下是主程序部分 
  
  int x[Nx]={1,1,1,1,1};
  int h[Nh]={1,1,2};
  int y[Length];
  int r[Length];
void main()
{ 
int k;
 //调用卷积程序
convolution(x,h,y);
fprintf(stdout,"  convolution of x and h  is(y=):  " );
for(k=0;k<=Length-1;k++)
 fprintf(stdout,"%i  ",y[k]); fprintf(stdout,"\n  ");
 
 //调用相关程序
correlation(x,h,r);
fprintf(stdout,"correlation of x and h is(r=):  " );
for(k=0;k<=Length-1;k++)
 fprintf(stdout,"%i  ",r[k]);
 
 

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?