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

Материал из GTL-wiki
Перейти к навигации Перейти к поиску
 
(не показано 7 промежуточных версий этого же участника)
Строка 1: Строка 1:
== Краткое описание ==
== Краткое описание ==
Функция предназначена для расчета коэффициента корреляции дискретных сигналов (массивов). В качестве аргументов на вход подаются объекты, содержащие массив данных в ключе data. В результате возвращается расчетное значение коэффициента корреляции.
Функция предназначена для расчета коэффициента корреляции дискретных сигналов (массивов). В качестве аргументов на вход подаются массивы данных. В результате возвращается расчетное значение коэффициента корреляции.


== Синтаксис ==
== Синтаксис ==
Стандартная конструкция выглядит таким образом:
Стандартная конструкция выглядит таким образом:
<pre style="color: purple>
<pre style="color: purple>
var __mes = getStdMeasures(
var __corr = getCorr( массив 1, массив 2 );
    {
      src: gtl.analog_inputs[0], //источник сигнала вибрации
      time: 0.25, //интервал расчета параметров
      avg: 8 //количество отсчетов для усреднения
    }
);
</pre>
</pre>
== Результат ==
:<code style="color: purple>rms_A2_3000.value</code> - СКЗ виброускорения в диапазоне 2-3000 Гц
:<code style="color: purple>rms_A2_10000.value</code> - СКЗ виброускорения в диапазоне 2-10000 Гц
:<code style="color: purple>rms_A100_10000.value</code> - СКЗ виброускорения в диапазоне 100-10000 Гц
:<code style="color: purple>ampl_A100_10000.value</code> - амплитуда виброускорения в диапазоне 100-10000 Гц
:<code style="color: purple>ampl_full.value</code> - амплитуда виброускорения во всем диапазоне измерения
:<code style="color: purple>rms_V2_1000.value</code> - СКЗ виброскорости в диапазоне 2-1000 Гц
:<code style="color: purple>rms_V10_1000.value</code> - СКЗ виброскорости в диапазоне 10-1000 Гц
:<code style="color: purple>rms_S2_200.value</code> - СКЗ виброперемещения в диапазоне 2-200 Гц
:<code style="color: purple>kurt_full.value</code> - эксцесс во всем диапазоне измерения
:<code style="color: purple>kurt_2_5k.value</code> - эксцесс в полосе 2.5-5 кГц
:<code style="color: purple>kurt_5_10k.value</code> - эксцесс в полосе 5-10 кГц
:<code style="color: purple>kurt_10_20k.value</code> - эксцесс в полосе 10-20 кГц
:<code style="color: purple>kurt_30_40k.value</code> - эксцесс в полосе 30-40 кГц
:<code style="color: purple>kurt_40_80k.value</code> - эксцесс в полосе 40-80 кГц


== Содержание функции ==
== Содержание функции ==
<pre>
<pre>
function getCorr(src1, src2) {
function getCorr(arr1, arr2) {
    let arr1 = src1.data;
    let arr2 = src2.data;
     let X = 0; //аргумент 1
     let X = 0; //аргумент 1
     let Y = 0; //аргумент 2
     let Y = 0; //аргумент 2
     let Z = 0; //аргумент 3
     let Z = 0; //аргумент 3
     let arr1_avg = arr1.reduce((acc, item) => (acc + item)) / arr1.length; //среднее значение массива 1
     let __avg1 = arr1.reduce((acc, item) => (acc + item)) / arr1.length; //среднее значение массива 1
     let arr2_avg = arr2.reduce((acc, item) => (acc + item)) / arr2.length; //среднее значение массива 2
     let __avg2 = arr2.reduce((acc, item) => (acc + item)) / arr2.length; //среднее значение массива 2


     for (let i = 0; i < arr1.length; i++) {
     for (let i = 0; i < arr1.length; i++) {
         X += (arr1[i] - arr1_avg) * (arr2[i] - arr2_avg);
         X += (arr1[i] - __avg1) * (arr1[i] - __avg2);
         Y += (arr1[i] - arr1_avg) ** 2;
         Y += (arr1[i] - __avg1) ** 2;
         Z += (arr2[i] - arr2_avg) ** 2;
         Z += (arr2[i] - __avg2) ** 2;
     };
     };



Текущая версия от 00:52, 24 февраля 2025

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

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

Синтаксис

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

var __corr = getCorr( массив 1, массив 2 );

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

function getCorr(arr1, arr2) {
    let X = 0; //аргумент 1
    let Y = 0; //аргумент 2
    let Z = 0; //аргумент 3
    let __avg1 = arr1.reduce((acc, item) => (acc + item)) / arr1.length; //среднее значение массива 1
    let __avg2 = arr2.reduce((acc, item) => (acc + item)) / arr2.length; //среднее значение массива 2

    for (let i = 0; i < arr1.length; i++) {
        X += (arr1[i] - __avg1) * (arr1[i] - __avg2);
        Y += (arr1[i] - __avg1) ** 2;
        Z += (arr2[i] - __avg2) ** 2;
    };

    return X / (Math.sqrt(Y) * Math.sqrt(Z));
}; //рассчет корреляции