From e63109b7876c2a9031f37c017784b90e4a2e2ef7 Mon Sep 17 00:00:00 2001 From: Aleksey_K Date: Wed, 26 Jun 2024 10:54:10 +0900 Subject: [PATCH] getMask was changed --- getMask.js | 44 +++++++++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/getMask.js b/getMask.js index cc72b53..bfb4b7d 100644 --- a/getMask.js +++ b/getMask.js @@ -1,28 +1,28 @@ -export function specModel(spec, tol, color, canvas) { +export function specModel(options) { let result = {}; //результат - let model = spec.base; //массив точек базовой линии для построения упрощенной модели спектра + let model = options.src.base; //массив точек базовой линии для построения упрощенной модели спектра let imin = 0; //левая граница коридора let imax = 0; //правая граница коридора - for (let i = 0; i < spec.peaks.length; i++) { - let freq = spec.peaks[i].freq; //получаем значение частоты гармоники из массива обнаруженных гармоник - let level = spec.peaks[i].level; //получаем значение уровня гармоники из массива обнаруженных гармоник - imin = Math.round((freq - freq * 0.5 * tol / 100) / spec.resolution); - imax = Math.round((freq + freq * 0.5 * tol / 100) / spec.resolution); - if (imax > spec.base.length) { imax = spec.base.length - 1 }; //проверяем выход границы за размер массива - for (let j = imin; j <= imax; j++) { model[j] = spec.base[j] + level }; + for (let i = 0; i < options.src.peaks.length; i++) { + let freq = options.src.peaks[i].freq; //получаем значение частоты гармоники из массива обнаруженных гармоник + let level = options.src.peaks[i].level; //получаем значение уровня гармоники из массива обнаруженных гармоник + imin = Math.round((freq - freq * 0.5 * options.tol / 100) / options.src.resolution); + imax = Math.round((freq + freq * 0.5 * options.tol / 100) / options.src.resolution); + if (imax > options.src.base.length) { imax = options.src.base.length - 1 }; //проверяем выход границы за размер массива + for (let j = imin; j <= imax; j++) { model[j] = options.src.base[j] + level }; }; //формируем результат - result["name"] = "model_" + spec.name; - result["resolution"] = spec.resolution; + result["name"] = "model_" + options.src.name; + result["resolution"] = options.src.resolution; result["data"] = model; //отрисовка графика на plot - if (canvas != undefined) { - canvas.add( + if (options.canvas != undefined) { + options.canvas.add( { - color: color, + color: options.color, name: result.name, x: result.resolution, y: model @@ -139,12 +139,18 @@ export function getMask(options) { return result; }; //построение портрета дефекта -export function corr(spec1, spec2) { +export function corr(options) { let result = {}; //результат let plot = []; //массив значений корреляции для графика let corr = 0; //коэффициент корреляции - let arr1 = spec1.data; - let arr2 = spec2.data; + let arr1 = options.src1.data; + let arr2 = options.src2.data; + if (options.offset != undefined) { + let k = Math.round(arr2.length * options.offset); //количесто индексов для сдвига массива + let Rh = arr2.slice(- k); //отделяем "хвост" массива + let Lt = arr2.slice(0, - k); //отделяем "тело" массива + arr2 = [].concat(Rh, Lt); //соединяем части массива + }; let arr1_sum = 0; //сумма значений массива 1 let arr2_sum = 0; //сумма значений массива 2 let X = 0; //аргумент 1 @@ -164,7 +170,7 @@ export function corr(spec1, spec2) { corr = X / (Math.sqrt(Y) * Math.sqrt(Z)); result["corr"] = corr; - result["plot"] = plot; + result["data"] = plot; return result; -}; //рассчет корреляции спектров +}; //рассчет корреляции (автокорреляции) сигналов