Gtld square

Материал из GTL-wiki
Перейти к навигации Перейти к поиску

Краткое описание

Функция для расчета площадей спектра вибрации или его части. Необходима для количественной оценки работы (мощности) колебательных сил, проведения мониторинга изменений параметра и прогнозирования. В качестве аргументов подается объект, содержащий массив данных и границы расчета площади. В результате работы функции возвращается объект с расчетными площадями составляющих спектра.

Cодержание функции возможно будет изменяться!

Синтаксис

Стандартная конструкция выглядит таким образом:

let __sqrs = specSquare( объект спектра, начало отсчета, граничная частота );

Результат

__sqrs.base - площадь спектра под базовой линией;
__sqrs.spec - общая площадь спектра;
__sqrs.harm - площадь спектра над базовой линией (случайных и гармонических составляющих);
__sqrs.peak - площадь гармонических составляющих спектра;

Содержание функции

function specSquare(spec, L, R) {
    let base = spec.base; //массив значений средней линии
    let data = spec.data; //массив значений амплитуд
    let lines = spec.data.length; //количества линий спектра вибрации 
    let res = spec.resolution; //частотное разрешения спектра вибрации (основание прямоугольной трапеции)  
    let peaks = spec.peaks; //массив обнаруженных гармоник (объекты)
    let start = 0; //стартовый индекс в массиве
    let end = lines; //конечный индекс в массиве
    let s0 = 0; //площадь под базовой линией
    let s1 = 0; //площадь всего спектра
    let s2 = 0; //площадь над базовой линией
    let s3 = 0; //площадь обнаруженных гармоник
    if (L != undefined) { start = Math.round(L / res) }; //начальная точка отсчета в массиве (стартовый индекс)
    if (R != undefined) { end = Math.round(R / res) }; //конечная точка отчета в массиве (конечный индекс)

    for (let i = start; i <= end - 1; i++) {
        s0 += 0.5 * (base[i] + base[i + 1]) * res; //площадь под базовой линией
        s1 += 0.5 * (data[i] + data[i + 1]) * res; //площадь спектра
        if ((s1 - s0) >= 0) { s2 += s1 - s0 }; //площадь над базовой линией (как положительная разница)
        if (i <= peaks.length - 1) { s3 += res * peaks[i].level };
    }; //вычисляем площадь спектра вибрации

    return {
        base: s0,
        spec: s1,
        harm: s2,
        peak: s3
    };
}; //определение площадей спектра