#define MAX(a, b) (a) > (b) ? (a) : (b)
#define MIN(a, b) (a) < (b) ? (a) : (b)
typedef double dtype;
void filter2(const dtype* x, int xlen, const dtype* h, int hlen, dtype* y)
{
int i, j;
int hmid = (hlen - 1) / 2;
for(i=0;i<xlen;++i)
{
int start=MAX(0,i - hmid);
int end=MIN(xlen, i+hlen-hmid);
dtype sum = 0;
for(j=start;j<end;++j)
{
sum += x[j]*h[j-i+hmid];
}
y[i]=sum;
}
}
滤波器长度为偶数时和matlab结果不一样,数据会偏一个位置,不知道哪位给指点一下