Второй день мучаюсь, не могу до конца понять логики работы функции
Код
void fir_mem16(const float *x, const float *num, float *y, int N, int ord, float *mem, char *stack)
{
int i,j;
float xi,yi;
for (i=0;i<N;i++)
{
xi=x[i];
y[i] = x[i]+mem[0];
for (j=0;j<ord-1;j++)
{
mem[j] = mem[j+1]+num[j]*xi;
}
mem[ord-1] = num[ord-1]*xi;
}
}
Говорят, это FIR в Direct Form 2 transponded. Я никак не могу проследить работу с этим mem.
Смысл, то вроде понятен: умножить входящий сигнал на коефициенты и сложить всё это. И так для каждого отсчёта. Помогите перевести эту фунуцию в более читабельный вид.
т.е., я думаю в DF1. Я пытался, но у меня изза недостатка опыта ничего не выходит.
я думаю, в Direct form 1 будет проще её считать на DSP, c использованием операции MAC...
The truth is out there...