пятница, 17 августа 2012 г.

Цифровые фильтры. Генерация СИ кода-онлайн

Для алгоритма и расчета цифровых фильтров можно использовать онлайн-бульбулятор. Очень просто: выбираете тип фильтра: "Баттерворт", "Бессель", "Чебышев" и ФНЧ, ФВЧ, полосовой или заграждающий, далее порядок фильтра (max = 10), далее вводите частоту дискретизации сигнала и необходимые частоты среза фильтра. Нажимаете "Отправить" и на следующей страничке имеете пример кода на С, значения коэффициентов, АЧХ полученного фильтра и графики реакции на прямоугольный импульс.

Например:
#define NZEROS 8
#define NPOLES 8
#define GAIN   1.104511120e+02

static float xv[NZEROS+1], yv[NPOLES+1];

static void filterloop()
  { for (;;)
      { xv[0] = xv[1]; xv[1] = xv[2]; xv[2] = xv[3]; xv[3] = xv[4]; xv[4] = xv[5]; xv[5] = xv[6]; xv[6] = xv[7]; xv[7] = xv[8];
         xv[8] = next input value / GAIN;
        yv[0] = yv[1]; yv[1] = yv[2]; yv[2] = yv[3]; yv[3] = yv[4]; yv[4] = yv[5]; yv[5] = yv[6]; yv[6] = yv[7]; yv[7] = yv[8];
         yv[8] =   (xv[8] - xv[0]) +   1.9999857878 * (xv[1] - xv[7]) + 2 * (xv[2] - xv[6])
                     +   5.9999573634 * (xv[5] - xv[3])
                     + ( -0.0000000000 * yv[0]) + ( -0.0000000000 * yv[1])
                     + ( -0.9995761461 * yv[2]) + (  5.9835604076 * yv[3])
                     + (-14.9384994270 * yv[4]) + ( 19.9098746640 * yv[5])
                     + (-14.9406119520 * yv[6]) + (  5.9852524500 * yv[7]);
        next output value = yv[8];
      }
  }



Комментариев нет:

Отправить комментарий

В комментариях уважайте собеседника, внимательно читайте посты и не додумывайте. Просьбы и предложения из разряда: «можно ваш Skype/Viber/телефон», «напишите мне в vk/FB», а также другие им подобные — игнорируются. Выход новых версий ПО, внешняя ссылка, переставшая работать с течением времени и т.п. не является основанием для претензий. Желающие спокойно подискутировать и высказаться — Welcome. Желающие спонсировать блог — Donate. Нарушение этих простых правил ведет к бану и удалению комментариев без предупреждения.