Gtld getCrossSpec

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

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

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

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

Синтаксис

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

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

Результат

__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 };
}