36 lines
1.7 KiB
JavaScript
36 lines
1.7 KiB
JavaScript
"use strict";
|
|
|
|
export function knDefs(mtx, isDeep) {
|
|
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;
|
|
};
|
|
|
|
|
|
|