Gtld filters: различия между версиями

Материал из GTL-wiki
Перейти к навигации Перейти к поиску
 
(не показаны 4 промежуточные версии этого же участника)
Строка 1: Строка 1:
== Краткое описание ==
== Краткое описание ==
функция предназначена для более наглядного создания фильтров различных типов (ФНЧ, ФВЧ, Режекторный, Полосовой).
функция предназначена для более наглядного создания фильтров различных типов (Режекторный, Полосовой, ФВЧ, ФНЧ).
:Примечание:
<pre>
<pre>
 
Примечание:
 
  1. Если указываются аргументы before и after, то создается режекторный фильтр (в сигнале сохраняются частоты до before и далее от after);
 
  2. Если указываются аргументы from и to, то создается полосовой фильтр (в сигнале сохраняются частоты от from до to);
Если
  3. Если указывается один аргумент from, то создается фильтр высоких частот HPF (в сигнале сохраняются частоты от from);
 
  4. Если указывается один аргумент to, то создается фильтр низких частот LPF (в сигнале сохраняются частоты до to);
</pre>
</pre>


Строка 19: Строка 18:
         source: gtl.analog_inputs[0] //источник сигнала
         source: gtl.analog_inputs[0] //источник сигнала
     }
     }
);
</pre>
</pre>



Текущая версия от 06:36, 25 февраля 2025

Краткое описание

функция предназначена для более наглядного создания фильтров различных типов (Режекторный, Полосовой, ФВЧ, ФНЧ).

Примечание:
  1. Если указываются аргументы before и after, то создается режекторный фильтр (в сигнале сохраняются частоты до before и далее от after);
  2. Если указываются аргументы from и to, то создается полосовой фильтр (в сигнале сохраняются частоты от from до to);
  3. Если указывается один аргумент from, то создается фильтр высоких частот HPF (в сигнале сохраняются частоты от from);
  4. Если указывается один аргумент to, то создается фильтр низких частот LPF (в сигнале сохраняются частоты до to);

Синтаксис

Стандартная конструкция выглядит таким образом (на примере полосового фильтра 10-1000 Гц):

let __fltr = createFilter(
    {
        from: 10, //левая граница фильтра
        to: 1000, //правая граница фильтра
        source: gtl.analog_inputs[0] //источник сигнала
    }
);

Содержание функции

function createFilter(args) {
  // значения по умолчанию
  let __kind = gtl.filter_iir.butterworth;
  let __type = gtl.filter_iir.bandpass;
  let __order = 10;
  let __frequency = 505;
  let __width = 990;

  if (args["kind"] != undefined) __kind = args.kind;
  if (args["order"] != undefined) __order = args.order;

  // NEW STYLE CONFIG
  if (args["from"] != undefined && args["to"] != undefined) {
    __width = args.to - args.from;
    __frequency = __width / 2 + args.from;
    __type = gtl.filter_iir.bandpass;
    gtl.log.info("createFilter: type", "bandpass");
  }

  if (args["from"] != undefined && args["to"] == undefined) {
    __frequency = args.from;
    __type = gtl.filter_iir.highpass;
    gtl.log.info("createFilter: type", "highpass");
  }

  if (args["from"] == undefined && args["to"] != undefined) {
    __frequency = args.to;
    __type = gtl.filter_iir.lowpass;
    gtl.log.info("createFilter: type", "highpass");
  }

  if (args["before"] != undefined && args["after"] != undefined) {
    __width = args.after - args.before;
    __frequency = __width / 2 + args.before;
    __type = gtl.filter_iir.bandstop;
    gtl.log.info("createFilter: type", "bandstop");
  }

  let __source = args.source;
  let __filter = gtl.add_filter_iir(__source);

  __filter.kind = __kind;
  __filter.type = __type;
  __filter.order = __order;
  __filter.frequency = __frequency;
  __filter.width = __width;

  gtl.log.info("createFilter: order", __filter.order);
  gtl.log.info("createFilter: frequency", __filter.frequency);
  gtl.log.info("createFilter: width", __filter.width);

  return __filter;
}