реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Помогите разобраться с цифровыми фильтрами, direct form II T конвертировать в direct form I
sigmaN
сообщение Aug 1 2008, 20:01
Сообщение #1


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Нужно разобраться с FIR IIR фильтрами. Помогите литературой/советами.
Задача сейчас: переписать функцию, реализующую direct form 2 transposed в direct form I с максимальной оптимизацией.
Слышал, что в direct form I можно больше использовать MAC и выиграть в производительности.

На данный момент iir функция выглядит так:
Код
#define MAC16_16(c,a,b)     ((c)+(a)*(b))
void iir_mem16(const spx_word16_t *x, const spx_coef_t *den, spx_word16_t *y, int N, int ord, spx_mem_t *mem, char *stack)
{
  int i,j;
   spx_word16_t yi,nyi;

   for (i=0;i<N;i++)
   {
      yi = x[i]+mem[0];
      nyi = -yi;
      for (j=0;j<ord-1;j++)
      {
         mem[j] = MAC16_16(mem[j+1],den[j],nyi);
      }
      mem[ord-1] = den[ord-1]*nyi;
      y[i] = yi;
   }
}


Нужна любая информация. Как теория, так и практические советы.


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Aug 2 2008, 12:05
Сообщение #2


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



С теорией разобрался.
Начал с переписывания FIR фильтра
Код
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, потому что
Код
for (i=1;i<N;i++)
   {
      y[i]=0;
      for (j=0;j<ord;j++)
      {
          if(i-j>=0)
            y[i]+=num[j]*x[i-j];
      }    
   }

не работает. Может быть я чего-то не понял. Но вроди как это и есть FIR. Т.е. я смотрел на формулу и писал...
Может быть кто-то подскажет в чём дело?


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
uriy
сообщение Aug 3 2008, 13:58
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Каким компилятором вы пользуетесь? Если например VDSP или CCS то ведь там уже есть реализация фильтров. Не надо ничего самому придумывать.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st August 2025 - 12:17
Рейтинг@Mail.ru


Страница сгенерированна за 0.01357 секунд с 7
ELECTRONIX ©2004-2016