gtld2-diag-scripts/kNN/knDefs.js

36 lines
1.7 KiB
JavaScript
Raw Permalink Normal View History

2024-04-23 10:55:10 +03:00
"use strict";
2024-06-11 08:41:46 +03:00
export function knDefs(mtx, isDeep) {
2024-04-23 10:55:10 +03:00
var res = {}; //результат
if (isDeep = true) { var key = "dp" } else { var key = "lv" };
var des = {
FTF: { ds: "Износ тел качения и сепаратора", dp: 8, lv: 20 },
FREQ: { ds: "Износ внутреннего кольца", dp: 13, lv: 20 },
BSF: { ds: "Дефект тел качения", dp: 10, lv: 20 },
BPFO: { ds: "Дефект наружного кольца", dp: 15, lv: 20 },
BPFI: { ds: "Дефект внутреннего кольца", dp: 8, lv: 20 },
}; //описание функциональных частот
var rows = Object.keys(mtx); //массив ключей объекта (наборов гармоник)
for (let i = 0; i <= rows.length - 1; i++) {
let arr = mtx[rows[i]]; //массив гармоник
let delta = 0; //"расстояние" до дефекта
for (let j = 0; j <= arr.length - 1; j++) {
let limit = des[rows[i]][key]; //порог для гармоник
if (arr[j] / limit >= 1) { limit = arr[j] };
delta = delta + Math.pow(1 - arr[j] / limit, 2);
};
delta = Math.sqrt(delta);
res[rows[i]] = delta;
};
let values = Object.values(res); //собираем значения ключей объекта в массив
let minValue = Math.min(...values); //определяем минимальное значение
let minKey = Object.keys(res).find(minKey => res[minKey] === minValue); //определяем ключ по минимальному значению
return des[minKey].ds;
};