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

Материал из GTL-wiki
Перейти к навигации Перейти к поиску
(Новая страница: «== Краткое описание == Функция предназначена для расчета параметров перекрестного спектра. Функция возвращает объект с параметрами перекрестного спектра (действительная часть, мнимая часть, амплитуда, фаза). <p style="color: red>Cодержание функции может дополн...»)
 
Нет описания правки
 
Строка 8: Строка 8:
let __cross = getCrossSpectrum(reX, imX, reY, imY);
let __cross = getCrossSpectrum(reX, imX, reY, imY);
</pre>
</pre>
== Аргументы ==
:<code style="color: purple>reX</code> - действительная часть спектра 1;
:<code style="color: purple>imX</code> - мнимая часть спектра 1;
:<code style="color: purple>reY</code> - действительная часть спектра 2;
:<code style="color: purple>imY</code> - мнимая часть спектра 2;


== Результат ==
== Результат ==

Текущая версия от 06:59, 30 июня 2026

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

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

Cодержание функции может дополняться!

Синтаксис

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

let __cross = getCrossSpectrum(reX, imX, reY, imY);

Аргументы

reX - действительная часть спектра 1;
imX - мнимая часть спектра 1;
reY - действительная часть спектра 2;
imY - мнимая часть спектра 2;

Результат

__cross.reXY - действительная часть перекрестного спектра;
__cross.imXY - мнимая часть перекрестного спектра;
__cross.power - амплитуда перекрестного спектра;
__cross.phase - фазовая часть перекрестного спектра;

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

function getCrossSpectrum(reX, imX, reY, imY) {
    const n = reX.length;
    const reXY = new Array(n); // действительная часть
    const imXY = new Array(n); // мнимая часть
    const power = new Array(n); // мощность кросс-спектра
    let phase = new Array(n); // фаза (радианы)

    for (let i = 0; i < n; i++) {
        // Комплексное сопряжение спектра imY* (мнимая часть спектра силы сразу берём с обратным знаком)
        const a = reX[i], b = imX[i]; // X(f) = a + ib
        const c = reY[i], d = -imY[i]; // Y(f) = c + id

        // Почастотное умножение
        reXY[i] = a * c - b * d; // действительная часть
        imXY[i] = b * c + a * d; // мнимания часть

        // Мощность кросс-спектра
        power[i] = reXY[i] * reXY[i] + imXY[i] * imXY[i];

        // Фаза = arctan(Im/Re)
        phase[i] = Math.atan2(imXY[i], reXY[i]);
    }

    return { reXY, imXY, power, phase };
}