Gtld square: различия между версиями

Материал из GTL-wiki
Перейти к навигации Перейти к поиску
 
(не показано 6 промежуточных версий этого же участника)
Строка 5: Строка 5:
== Синтаксис ==
== Синтаксис ==
Стандартная конструкция выглядит таким образом:
Стандартная конструкция выглядит таким образом:
:<code style="color: purple>let __sqrs = specSquare( объект спектра, начало отсчета, граничная частота );</code>
:<code style="color: purple>let __sqrs = specSquare( объект спектра, начало отсчета, конец отсчета );</code>


== Результат ==
== Результат ==
Строка 15: Строка 15:
== Содержание функции ==
== Содержание функции ==
<pre>
<pre>
function specSquare(spec, bnd, frq) {
function specSquare(spec, L, R) {
     let base = spec.base; //массив значений средней линии
     let __base = spec.base; //массив значений средней линии
     let data = spec.data; //массив значений амплитуд
     let __data = spec.data; //массив значений амплитуд
     let peaks = spec.peaks; //массив обнаруженных гармоник
     let __lines = spec.data.length; //количество линий спектра
     let lines = data.length; //определение количества линий спектра вибрации
     let __res = spec.resolution; //частотное разрешения спектра
     let res = frq / lines; //определение частотного разрешения спектра вибрации (основание прямоугольной трапеции)
     let __start = 0; //стартовый индекс в массиве
     let start = 1; //переменная для определения стартового индекса в массиве
     let __end = __lines; //конечный индекс в массиве
     let s0 = 0; //переменная расчетной площади под базовой линией
     let s0 = 0; //площадь под базовой линией
     let s1 = 0; //переменная расчетной площади всего спектра
     let s1 = 0; //площадь всего спектра
     let s2 = 0; //переменная расчетной площади обнаруженных гармоник
     let s2 = 0; //площадь над базовой линией
     if (bnd !== 0) { start = lines - Math.round((frq - bnd) / res) }; //начальная точка отсчета в массиве (стартовый индекс)
    let s3 = 0; //площадь обнаруженных гармоник
     for (let i = start - 1; i <= lines - 2; i++) {
     if (L != undefined) { __start = Math.round(L / __res) };
         s0 += res * ((base[i] + base[i + 1]) / 2); //площадь под базовой линией
    if (R != undefined) { __end = Math.round(R / __res) };
         s1 += res * ((data[i] + data[i + 1]) / 2); //площадь спектра
   
         if (i <= peaks.length) { s2 += res * peaks[i].level };
     for (let i = __start; i <= __end - 1; i++) {
     }; //вычисляем площади спектра вибрации
         s0 += __base[i] * __res;
        s1 += __data[i] * __res;
         let __delta = __data[i] - __base[i];
        if (__delta >= 0) { s2 += __delta * __res };
         if (__delta >= spec.peak_level) { s3 += __delta * __res };
     };


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

Текущая версия от 00:46, 22 июля 2024

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

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

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 __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 += __base[i] * __res;
        s1 += __data[i] * __res;
        let __delta = __data[i] - __base[i];
        if (__delta >= 0) { s2 += __delta * __res };
        if (__delta >= spec.peak_level) { s3 += __delta * __res };
    };

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