[an error occurred while processing this directive]
|
Был БИХ фильтр сигнала, уложенного в массив:
int i,k;
float s1,s2;
for (i=0; i< Length; i++)
{
s1=0;
s2=0;
for (k=0; k<=4; k++)
{
if((i-k)<0) continue;
s1=s1+a[k]*(InputData[i-k]);
s2=s2+b[k]*(OutputData[i-k]);
}
OutputData[i]=s1-s2;
};
a[], b[] - естественно, коэффициенты.
Все замечательно.
Теперь его же пытаюсь использовать для последовательности входных сигналов, используя парочку массивов для хранении входной и выходной истории:
int i;
float s1=0,s2=0;
float OutputData;for(i=1; i<=4; i++) INARRAY[i-1]=INARRAY[i];
INARRAY[4]=InputData;for (i=0; i<=4; i++)
{
s1=s1+a[i]*(INARRAY[4-i]);
s2=s2+b[i]*(OUTARRAY[4-i]);
}
OutputData=s1-s2;for(i=1; i<=4; i++) OUTARRAY[i-1]=OUTARRAY[i];
OUTARRAY[4]=OutputData;Не работает. Где-то устроил себе грабли и целый день по ним топчусь.
Может, кто свежим взглядом их увидит?
E-mail: info@telesys.ru