我想在C中实现晶格冷杉滤波器。我的问题是如何制作延迟时间(z-1)。我尝试为每次迭代计算前一个样本,但是对于第M个第一个样本,我有一个负值。
您可以找到算法here
答案 0 :(得分:2)
p
是指向float
的指针,i
是short 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.