From 1d0593f72c21d9fba658d5739d1a1d6ea9e43d44 Mon Sep 17 00:00:00 2001 From: Aleksey_K Date: Mon, 20 May 2024 16:32:42 +0900 Subject: [PATCH] mask_funk was updated --- mask_func.js | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/mask_func.js b/mask_func.js index 4992a36..804ec81 100644 --- a/mask_func.js +++ b/mask_func.js @@ -1,5 +1,5 @@ -export function spec_model(spec, tol) { +export function spec_model(spec, tol, color) { let result = {}; //результат let model = spec.base; //исходный массив точек для построения упрощенной модели спектра let imin = 0; //левая граница коридора @@ -21,7 +21,7 @@ export function spec_model(spec, tol) { //отрисовка графика на plot gtl.plot.add( { - color: 0x44944A, + color: color, name: result.name, x: result.resolution, y: model @@ -64,33 +64,45 @@ export function mask(obj) { Y += (a[i] - a_avg) ** 2; Z += (b[i] - b_avg) ** 2; }; - gtl.log.info("Корреляция гармоники:", X / (Math.sqrt(Y) * Math.sqrt(Z))); + //gtl.log.info("Корреляция гармоники:", X / (Math.sqrt(Y) * Math.sqrt(Z))); return X / (Math.sqrt(Y) * Math.sqrt(Z)); }; + let arr1 = []; + let arr2 = []; switch (obj.type) { case 0: //обычный ряд for (let i = 1; i <= harms; i++) { - let arr1 = []; - let arr2 = []; xmin = Math.round(i * (obj.freq - obj.freq * 0.5 * obj.tol / 100) / obj.src2.resolution); //определяем индекс левой границы коридора xmax = Math.round(i * (obj.freq + obj.freq * 0.5 * obj.tol / 100) / obj.src2.resolution); //определяем индекс правой границы коридора if (xmax > obj.src2.base.length) { xmax = obj.src2.base.length - 2 }; //проверяем выход границы за размер массива for (let j = xmin; j <= xmax; j++) { mask[j] = obj.src2.base[j] + dl }; //записываем значение глубины модуляции для коридора + dl = dl - (k * dl); //снижаем глубину модуляции с коэффициентом затухания + for (let j = xmin - 2; j <= xmax + 2; j++) { arr1.push(mask[j]); arr2.push(data[j]); }; //формируем массивы портретной гармоники и спектра (модели) под портретом correlation += corr(arr1, arr2); //рассчитываем корреляцию данных из массивов - dl = dl - (k * dl); //снижаем глубину модуляции с коэффициентом затухания }; break; case 1: //четные составляющие - for (let i = 1; i < harms; i++) { + for (let i = 1; i <= harms; i++) { + xmin = Math.round(i * (obj.freq - obj.freq * 0.5 * obj.tol / 100) / obj.src2.resolution); //определяем индекс левой границы коридора + xmax = Math.round(i * (obj.freq + obj.freq * 0.5 * obj.tol / 100) / obj.src2.resolution); //определяем индекс правой границы коридора + if (xmax > obj.src2.base.length) { xmax = obj.src2.base.length - 2 }; //проверяем выход границы за размер массива if (i % 2 > 0) { - - + for (let j = xmin; j <= xmax; j++) { mask[j] = obj.src2.base[j] + k * dl }; //записываем значение глубины модуляции для коридора (нечетная гармоника) + } else { + for (let j = xmin; j <= xmax; j++) { mask[j] = obj.src2.base[j] + dl }; //записываем значение глубины модуляции для коридора (четная гармоника) + dl = dl - (k * dl); //снижаем глубину модуляции с коэффициентом затухания }; + + for (let j = xmin - 2; j <= xmax + 2; j++) { + arr1.push(mask[j]); + arr2.push(data[j]); + }; //формируем массивы портретной гармоники и спектра (модели) под портретом + correlation += corr(arr1, arr2); //рассчитываем корреляцию данных из массивов }; break; default: @@ -105,7 +117,7 @@ export function mask(obj) { //отрисовка графика на plot gtl.plot.add( { - color: 0xff0000, + color: obj.color, name: obj.name, x: obj.src2.resolution, y: mask