📄 concorr.c
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -