我有一个用 C 语言实现 FIR 滤波器的作业,我想知道你是否认为我正确理解了这个任务。我编写的我认为可以解决问题的程序是:
#include <stdio.h>
float FIRfloats[5];
void floatFIR(float newsample)
{
int i;
float sum=0;
FIRfloats[0]=newsample*0.0299;
FIRfloats[1]=FIRfloats[2]*0.4701;
FIRfloats[2]=FIRfloats[3]*0.4701;
FIRfloats[3]=FIRfloats[4]*0.0299;
/* sum */
for(i=0;i<5;i++)
{
sum=sum+FIRfloats[i];
}
printf("Sum: %f\n", sum);
}
int main ()
{
float n=0.0f;
while (scanf("%f", &n) > 0)
{
floatFIR(n);
}
return 0;
}
规格是
在新样本 xk 到达之前,旧样本向右移动,然后每个样本用一个系数缩放,然后计算结果 yk,即所有缩放样本的总和
系数应为 c0=0.0299、c1=0.4701、c2=0.4701、c3=0.0299。
你认为我正确地完成了作业吗?我认为这似乎太容易了,因此我想知道。