diff --git a/maskVM.js b/maskVM.js index 4853f76..8709fc0 100644 --- a/maskVM.js +++ b/maskVM.js @@ -136,8 +136,8 @@ export function createMask(options) { export function getMask(options) { let __result = {}; //результат - let __spec = options.src1; //источник данных для построения модели - let __set = options.src2; //источник данных для построения портретов дефектов + let __spec = options.spec; //источник данных для построения модели + let __set = options.set; //источник данных для построения портретов дефектов let __rows = Object.keys(__set); //массив ключей объекта (наименование портретов) let __model = specModel( @@ -159,7 +159,7 @@ export function getMask(options) { filter: options.filter, //полосовой фильтр (для определения разницы амплитуд гармонической и случайной составляющей) color: __set[__mask_name].clr, //цвет портрета в формате HEX freq: __set[__mask_name].frq, //функциональная частота, Гц - harms: __set[__mask_name].hrm, //кол-во гармоник в портрете, шт + harms: __set[__mask_name].cnt, //кол-во гармоник в портрете, шт lvl: __set[__mask_name].lvl, //глубина модуляции сильного дефекта для портрета, % tol: options.tol, //коридор обнаружения гармоники на портрете, % type: __set[__mask_name].type, //тип портрета (0 - обычный ряд, 1 - четные составляющие) diff --git a/mtxVM.js b/mtxVM.js new file mode 100644 index 0000000..488b996 --- /dev/null +++ b/mtxVM.js @@ -0,0 +1,81 @@ +export function modFactor(dSpec, dFilter, ampl, base) { + let dl = (ampl - base); //разность уровней гармонической и случайной составляющей вибрации + let df = dSpec.frequency / dFilter.width; //отношение частотному разрешению спектра к ширине фильтра + let mod = Math.sqrt((10 ** (dl / 10) - 1) * df); + return mod; +}; //определение глубины модуляции ВЧ составляющих + +export function createTools(options) { + let __spec = options.spec; //источник данных спектра + let __set = {}; //источник данных для построения частотных линий + if (options.set != undefined) { __set = options.set }; + + let __tools = gtl.create_spec_tools( + { + data: __spec.data, //массив значений амплитуд спектра + df: __spec.resolution, //частотное разрешение спектра + base: { + factor: 100, //коэффициент сглаживания базовой линии + visible: true, //отображение базовой линии + color: 0xFFFF00 //цвет базовой линии в формате HEX + }, + peaks: { + color: __spec.color, //цвет маркеров обнаруженных гармоник + visible: false, //отображение маркеров + level: __spec.peak_level //уровень обнаружения гармоник в спектре + }, + harms: { + tolerance: options.tol //коридор обнаружения гармоник в спектре + } + } + ); + + let __rows = Object.keys(__set); //массив ключей объекта (наименование частот) + for (let i = 0; i < __rows.length; i++) { + let __name = __rows[i]; //название гармонического ряда + let __color = __set[__name].clr; //цвет ряда в формате HEX + let __freq = __set[__name].frq; //расчетная частота + let __mod = __set[__name].mod; //модулирующая частота + let __harms = __set[__name].cnt; //количество гармоник + + let __row = __tools.harms.add( + { + frequency: __freq, //функциональная частота + count: __harms, //количество гармоник + color: __color, //цвет линий + weight: 2, //толщина линий + visible: false //отображение линий + } + ); + __row.name = __name; + + if (options.mod != 0) { + __row.modulate( + { + frequency: __mod, //частота амплитудной модуляции + count: 2, //количество боковых составляющих слева и справа + color: __color, //цвет линий в формате HEX + weight: 0.5 //толщина линий + } + ); + }; + }; + + return __tools; +}; //Построение компонентов и частотных линий на спектре + + + + + + + + + + + + + + + + diff --git a/userFunctions.js b/userFunctions.js index 49a759d..14ce03a 100644 --- a/userFunctions.js +++ b/userFunctions.js @@ -329,6 +329,65 @@ export function getSpen(args) { return __spen; }; //построение спектра огибающей +export function createTools(options) { + let __spec = options.spec; //источник данных спектра + let __set = {}; //источник данных для построения частотных линий + if (options.set != undefined) { __set = options.set }; + + let __tools = gtl.create_spec_tools( + { + data: __spec.data, //массив значений амплитуд спектра + df: __spec.resolution, //частотное разрешение спектра + base: { + factor: 100, //коэффициент сглаживания базовой линии + visible: true, //отображение базовой линии + color: 0xFFFF00 //цвет базовой линии в формате HEX + }, + peaks: { + color: __spec.color, //цвет маркеров обнаруженных гармоник + visible: false, //отображение маркеров + level: __spec.peak_level //уровень обнаружения гармоник в спектре + }, + harms: { + tolerance: options.tol //коридор обнаружения гармоник в спектре + } + } + ); + + let __rows = Object.keys(__set); //массив ключей объекта (наименование частот) + for (let i = 0; i < __rows.length; i++) { + let __name = __rows[i]; //название гармонического ряда + let __color = __set[__name].clr; //цвет ряда в формате HEX + let __freq = __set[__name].frq; //расчетная частота + let __mod = __set[__name].mod; //модулирующая частота + let __harms = __set[__name].cnt; //количество гармоник + + let __row = __tools.harms.add( + { + frequency: __freq, //функциональная частота + count: __harms, //количество гармоник + color: __color, //цвет линий + weight: 2, //толщина линий + visible: false //отображение линий + } + ); + __row.name = __name; + + if (options.mod != 0) { + __row.modulate( + { + frequency: __mod, //частота амплитудной модуляции + count: 2, //количество боковых составляющих слева и справа + color: __color, //цвет линий в формате HEX + weight: 0.5 //толщина линий + } + ); + }; + }; + + return __tools; +}; //Построение компонентов и частотных линий на спектре + export function getStdMeasures(options) { let __source = options.src; let __time = 0.1;