C编程中的格子杉过滤器?

时间:2017-06-12 10:10:53

标签: c algorithm filtering signal-processing

我想在C中实现晶格冷杉滤波器。我的问题是如何制作延迟时间(z-1)。我尝试为每次迭代计算前一个样本,但是对于第M个第一个样本,我有一个负值。

您可以找到算法here

1 个答案:

答案 0 :(得分:2)

p是指向float的指针,ishort int。您在循环条件中将p分配给i

void LatticeFIR(…, float *p)
{
    short i;
    …
    for (i=1;i=p;i++)

这一点的理解实际上是有意义的。如果你这样做,你的编译器应该发出大量的警告。

编辑: 只是为了给你一个想法,这就是clang -Wall对它的评价:

x.c:4:14: warning: incompatible pointer to integer
conversion assigning to 'short' from 'float *' [-Wint-conversion]
    for(i=1;i=p;i++)
             ^~
x.c:4:14: warning: using the result of an assignment
as a condition without parentheses [-Wparentheses]
    for(i=1;i=p;i++)
            ~^~
x.c:4:14: note: place parentheses around the assignment
to silence this warning
    for(i=1;i=p;i++)
             ^
            (  )
x.c:4:14: note: use '==' to turn this assignment into
an equality comparison
    for(i=1;i=p;i++)
             ^
             ==
2 warnings generated.