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

Материал из GTL-wiki
Перейти к навигации Перейти к поиску
Строка 11: Строка 11:
<pre>
<pre>
function getCorr(src1, src2) {
function getCorr(src1, src2) {
     let arr1 = src1.data;
     let __arr1 = src1.data;
     let arr2 = src2.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;
     let __arr1_avg = __arr1.reduce((acc, item) => (acc + item)) / __arr1.length;
     let arr2_avg = arr2.reduce((acc, item) => (acc + item)) / arr2.length;
     let __arr2_avg = __arr2.reduce((acc, item) => (acc + item)) / __arr2.length;


     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] - __arr1_avg) * (__arr2[i] - __arr2_avg);
         Y += (arr1[i] - arr1_avg) ** 2;
         Y += (__arr1[i] - __arr1_avg) ** 2;
         Z += (arr2[i] - arr2_avg) ** 2;
         Z += (__arr2[i] - __arr2_avg) ** 2;
     };
     };



Версия от 03:41, 10 июля 2024

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

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

Синтаксис

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

var __corr = getCorr( obj1, obj2 );

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

function getCorr(src1, src2) {
    let __arr1 = src1.data;
    let __arr2 = src2.data;
    let X = 0; //аргумент 1
    let Y = 0; //аргумент 2
    let Z = 0; //аргумент 3
    let __arr1_avg = __arr1.reduce((acc, item) => (acc + item)) / __arr1.length;
    let __arr2_avg = __arr2.reduce((acc, item) => (acc + item)) / __arr2.length;

    for (let i = 0; i < __arr1.length; i++) {
        X += (__arr1[i] - __arr1_avg) * (__arr2[i] - __arr2_avg);
        Y += (__arr1[i] - __arr1_avg) ** 2;
        Z += (__arr2[i] - __arr2_avg) ** 2;
    };

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