Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
int CSignal::setAsConvIIR(CSignal &signal, CFilterIIR &filter)
{
if (signal.nOf!=nOf)
return -1;
int orderOfFilter = filter.orderOf();
flpointt* memTmp = (flpointt*) _alloca(sizeof(flpointt)*nOf);
for(int i=0; i<nOf; i++)
{
memTmp[i]=0;
}
for(int i=offs; i<nOf; i++)
{
memTmp[i]=signal.s[i]*filter.b[0];
for(int j=1; j<filter.p; j++)
{
memTmp[i]+=signal.s[i-j]*filter.b[j];
}
for(int j=0; j<filter.q; j++)
{
memTmp[i]+=memTmp[i-j-1]*filter.a[j];
}
}
for(int i=nOf-orderOfFilter-1; i<nOf; i++)
{
s[i]=0;
}
for(int i=nOf-orderOfFilter-1; i>=0; i--)
{
s[i]=memTmp[i]*filter.b[0];
for(int j=1; j<filter.p; j++)
{
s[i]+=memTmp[i+j]*filter.b[j];
}
for(int j=0; j<filter.q; j++)
{
s[i]+=s[i+j+1]*filter.a[j];
}
}
return 0;
}

Быстрое размытие по Гауссу