Gtld filters

Материал из GTL-wiki
Перейти к навигации Перейти к поиску

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

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

Синтаксис

Стандартная конструкция выглядит таким образом:

let __fltr = createFilter(
    {
        spec: spen, //спектр для построения модели (объект)
        set: __set, //источник данных для построения частотных линий
        tol: 1 //коридор обнаружения гармоники на портрете, %
    }

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

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;

  // OLD STYLE CONFIG
  if (args["type"] != undefined) __type = args.type;
  if (args["frequency"] != undefined) __frequency = args.frequency;
  if (args["width"] != undefined) __width = args.width;

  // 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;
}